Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Kann mir bitte jemand helfen diese Quellcodes zu erstellen? Nummer 2.) und 3.). Ich kann keine erstellen, hab wirklich null Ahnung, also spart euch das mit: Versuchs selber! Hab es versucht und alles war nur falsch. Schreibe am Freitag nen Test, wäre lieb, wenn mir jemand helfen würde
Du brauchst nichts zu versuchen, denn das Thema Vererbung (= Thema dieses Threads) wird in der Aufgabenstellung zu Aufgabe 2 schon vollständig erschlagen.
Für Aufgabe 3 musst Du nur die in Aufgabe 2 gezeigte Klassendefinition anpassen. Manager durch Vorstand und Angestellter durch Manager zu ersetzen und dem super()-Aufruf den dritten Parameter hinzuzufügen, das kann man schon fast nicht als Transferleistung ansehen.
Also wenn Du am Freitag einen Test schreibst (da also aktiv Dein Wissen abgefragt wird), dann hilft es Dir doch nicht, wenn wir Dir eine Lösung geben. Die Vorstellung durch das Betrachten einer Lösung irgend etwas zu verstehen, ist aus meiner Sicht unrealistisch. Du kannst dann eine Lösung ggf. nachvollziehen. Aber Du musst doch im Test zu eigenen Aufgaben Lösungen erstellen.
Und die Qualität der Bilder hast Du auch nicht mal gepüft? Das zweite ist ja viel zu klein. Stark vergößert kann man es dann evtl. etwas erahnen, was da steht ... Ok, für die Aufgabe war dieses eigentlich erste Blatt weniger wichtig, aber das bestätigt das Gesamtbild ...
Aber was schreibe ich da ... es geht ja offensichtlich nicht um eine Hilfeanfrage bezüglich Java Fragen sondern um eine Art Hausaufgabe. Also muss man da nicht antworten (maximal die Frage: Was zahlst Du?) sondern es nur einfach in das entsprechende Unterforum verschieben lassen.
Also wenn Du am Freitag einen Test schreibst (da also aktiv Dein Wissen abgefragt wird), dann hilft es Dir doch nicht, wenn wir Dir eine Lösung geben. Die Vorstellung durch das Betrachten einer Lösung irgend etwas zu verstehen, ist aus meiner Sicht unrealistisch. Du kannst dann eine Lösung ggf. nachvollziehen. Aber Du musst doch im Test zu eigenen Aufgaben Lösungen erstellen.
Und die Qualität der Bilder hast Du auch nicht mal gepüft? Das zweite ist ja viel zu klein. Stark vergößert kann man es dann evtl. etwas erahnen, was da steht ... Ok, für die Aufgabe war dieses eigentlich erste Blatt weniger wichtig, aber das bestätigt das Gesamtbild ...
Aber was schreibe ich da ... es geht ja offensichtlich nicht um eine Hilfeanfrage bezüglich Java Fragen sondern um eine Art Hausaufgabe. Also muss man da nicht antworten (maximal die Frage: Was zahlst Du?) sondern es nur einfach in das entsprechende Unterforum verschieben lassen.
Also Code "auswendig lernen" ist kein Ansatz, der zum Erfolg führt fürchte ich. Oder erwartest Du, wirklich genau diese Aufgabe zu bekommen?
@mihe7 hat ja schon ausgeführt, dass bei der Aufgabe selbst keine hohe Transferleistung notwendig ist. Hier geht es also einfach um ein kleines Verständnis, was Java wie macht.
Und in der Regel sind das, was da gerade abgefragt wird, absolute Basics. Darauf wird dann ja im Weiteren drauf zugegriffen. Wenn diese Basics nicht halbwegs sitzen, dann hast Du bei dem Stoff, der da noch kommen wird, einfach keine Chance. (Wobei das ja evtl. etwas ist , das Du nicht weiter benötigst - da wir nichts wissen über Deine Situation, sind das natürlich nur Vermutungen...
Also Code "auswendig lernen" ist kein Ansatz, der zum Erfolg führt fürchte ich. Oder erwartest Du, wirklich genau diese Aufgabe zu bekommen?
@mihe7 hat ja schon ausgeführt, dass bei der Aufgabe selbst keine hohe Transferleistung notwendig ist. Hier geht es also einfach um ein kleines Verständnis, was Java wie macht.
Und in der Regel sind das, was da gerade abgefragt wird, absolute Basics. Darauf wird dann ja im Weiteren drauf zugegriffen. Wenn diese Basics nicht halbwegs sitzen, dann hast Du bei dem Stoff, der da noch kommen wird, einfach keine Chance. (Wobei das ja evtl. etwas ist , das Du nicht weiter benötigst - da wir nichts wissen über Deine Situation, sind das natürlich nur Vermutungen...
Also Code "auswendig lernen" ist kein Ansatz, der zum Erfolg führt fürchte ich. Oder erwartest Du, wirklich genau diese Aufgabe zu bekommen?
@mihe7 hat ja schon ausgeführt, dass bei der Aufgabe selbst keine hohe Transferleistung notwendig ist. Hier geht es also einfach um ein kleines Verständnis, was Java wie macht.
Und in der Regel sind das, was da gerade abgefragt wird, absolute Basics. Darauf wird dann ja im Weiteren drauf zugegriffen. Wenn diese Basics nicht halbwegs sitzen, dann hast Du bei dem Stoff, der da noch kommen wird, einfach keine Chance. (Wobei das ja evtl. etwas ist , das Du nicht weiter benötigst - da wir nichts wissen über Deine Situation, sind das natürlich nur Vermutungen...
Aber doch nicht GENAU diese Aufgabe. Sondern nur eine Aufgabe in der Art. Wenn Du irgendwie an die Aufgaben, die am Freitag gestellt werden, gekommen bist, dann wäre es nicht ratsam, damit an die Öffentlichkeit zu gehen
Zusatz: was, wenn jemand (mit/ohne z.B. ChatGPT) (un)absichtlich eine (sub)optimale (evtl. sogar komplett falsche) Lösung präsentiert ?
Ein Verständnis der Reaktionen des Compilers auf die Zugriffsmodifizierer sowie dem längerfristigen Sinn von Getter-/Setter-Methoden (inkl. Namensgebung) wäre da wohl hilfreicher...
So könnte z.B. Vorstand.java aussehen (absichtlich als Bild):
Zusatz: was, wenn jemand (mit/ohne z.B. ChatGPT) (un)absichtlich eine (sub)optimale (evtl. sogar komplett falsche) Lösung präsentiert ?
Ein Verständnis der Reaktionen des Compilers auf die Zugriffsmodifizierer sowie dem längerfristigen Sinn von Getter-/Setter-Methoden (inkl. Namensgebung) wäre da wohl hilfreicher...
So könnte z.B. Vorstand.java aussehen (absichtlich als Bild):
Wenn die Aufgabe lautet "schreibe eine (öffentliche) Klasse B", dann wäre das einfach mal
Java:
public class B {
}
Erweitern wir die Aufgabe mal: "schreibe nun eine öffentliche Klasse K, die von Klasse B ableitet/erbt", dann schreibst Du
Java:
public class K extends B {
}
Das ist fast schon reines Englisch: "öffentliche Klasse B" und "öffentliche Klasse K erweitert B". Damit wäre das Ableiten von Klasen schon zu einem guten Teil erledigt (für die Aufgabe reichts).
Heißt: Du merkst Dir, wie man ganz allgemein Klassen definiert (wie die Klasse B) und dass Du für das Ableiten von einer Basisklasse noch ein "extends B" hinzufügst, wobei B der Name der Basisklasse ist.
Das war ja nun nicht schwer, oder?
Gibst Du kein extends an, wird übrigens automatisch extends java.lang.Object eingesetzt. D. h. tatsächlich haben in Java alle selbstgeschriebenen Klassen eine Basisklasse, von der sie abgeleitet sind.
Wie ist das nun mit den Konstruktoren? Jede Klasse, die Du schreibst, hat mindestens einen Konstruktor und jeder dieser Konstruktoren ruft genau einen Konstruktor der Basisklasse auf.
Wenn Du jetzt sagst: "erzähl keinen Scheiß, die Klassen da oben haben ja gar keine Konstruktoren", dann muss ich Dich enttäuschen. Wenn Du selbst keinen Konstruktor definierst (wie in den Klassen B und K), dann spendiert Dir Java automatisch einen Standardkonstruktor, der keine Parameter besitzt und einfach den Konstruktor der Basisklasse aufruft.
Einen Konstruktor der Basisklasse rufst Du mit dem Schlüsselwort super auf. Der Aufruf muss die erste Anweisung im Konstruktor sein. Das siehst Du z. B. in Aufgabe 2.
Gibst Du selbst keinen Aufruf an, wird automatisch super(); aufgerufen, d. h. der parameterlose Konstruktor der Basisklasse. Wenn die Basisklasse keinen parameterlosen Konstruktor hat, meldet der Compiler in diesem Fall einen Fehler.
Hört sich kompliziert an, ist aber eigentlich ganz einfach. Der Code oben ließe sich ausführlich auch wie folgt schreiben:
Java:
public class B extends java.lang.Object {
public B() {
super();
}
}
und
Java:
public class K extends B {
public K() {
super();
}
}
Das "extends java.lang.Object" gibt man aber normalerweise nicht an, ich lasse das jetzt auch wieder weg.
Wenn wir jetzt dem Konstruktor in B einen Parameter und noch etwas Code spendieren:
Java:
public class B {
public B(String einName) {
super();
System.out.println("Hallo " + einName);
}
}
... dann bekommst Du einen Kompilierungsfehler. Warum?
Klasse K versucht, den parameterlosen Konstruktor von B aufzurufen. Den gibt es aber nun offensichtlich ncht mehr. Also muss der super-Aufruf in Klasse K angepasst werden, z. B. könnte man einfach einen fixen String angeben:
Java:
public class K extends B {
public K() {
super("Hans");
System.out.println("Mach's gut, Deine Klasse K");
}
}
Wird nun irgendwo ein Objekt der Klasse K erzeugt, dann wird der Konstruktor von K ausgeführt, der zunächst super("Hans") aufruft, also den Konstruktor der Basisklasse B, der einen String erwartet. Der Konstruktor B(String einName) ruft seinerseits den Konstruktor der Basisklasse java.lang.Object auf. Was dort passiert, muss uns nicht weiter interessieren. Danach gibt der Konstruktor von B "Hallo Hans" auf dem Bildschirm aus. Jetzt kehren wir zum Konstruktor von K zurück, denn der Aufruf super("Hans") ist nun erledigt. Dort wird noch "Mach's gut, Deine Klasse K" ausgegeben. Fertig.
Probier ein wenig rum, bis Du damit vertraut bist. Wenn Du das ein paar mal geschrieben hast (möglichst aus dem Kopf), dann weißt Du am Freitag auch, wie das läuft.
Beim Lernen helfen wir dir (mihe7 ist da ja schon übereifrig dabei), aber fertigen Code zum Auswendiglernen schreibe ich dir ganz sicher nicht. Einerseits habe ich dazu keine Lust, andererseits gibt es in allen Entwicklerdisziplinen bereits genug unfähige Idioten, die nicht halb so gut sind wie es ihre Zeugnisse vermuten lassen würden und wir brauchen nicht noch mehr davon.
Hast du denn das Thema eigentlich verstanden und weißt nur nicht wie du das im Code formulieren sollst, oder hast du so komplett gar keine Ahnung was da wie vor sich geht?