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.
Ich habe eine Frage zum Standardkonstruktor. Folgender Konstruktor ist gegeben:
Java:
public Rennwagen() { maxTankinhalt = 100; }
Wäre das ein Standardkonstruktor der Klasse Rennwagen? Oder gilt das dann hier schon als eigener implementierter Konstruktor und nicht mehr als Standardkonstruktor, weil der Standardkonstruktor keinen Inhalt haben darf? Oder ist jeder Konstruktor der keine Parameter hat ein Standardkonstruktor?
Ein "default constructor" oder "Standardkonstruktor" ist der Konstruktor, den der javac Compiler automatisch erstellt*, wenn du selbst keinen eigenen Konstruktor (mit oder ohne Parameter) schreibst. Sobald du in einer Klasse einen Konstruktor selbst erstellst/schreibst (mit oder ohne Parameter), wird der Java-Compiler keinen Standardkonstruktor mehr erzeugen.
Der Standardkonstruktor ist parameterlos.
Wenn du selbst einen Konstruktor ohne Parameter manuell schreibst, ist das technisch gesehen kein Standardkonstruktor, sondern ein benutzerdefinierter parameterloser Konstruktor. Auch, wenn der Body des Konstruktors leer ist.
* wenn das möglich ist. Heißt: Wenn deine Klasse von einer Klasse (z.B. automatisch von java.lang.Object) ableitet, die selbst einen parameterlosen Konstruktor besitzt.
* wenn das möglich ist. Heißt: Wenn deine Klasse von einer Klasse (z.B. automatisch von java.lang.Object) ableitet, die selbst einen parameterlosen Konstruktor besitzt.
Das bedeutet, wenn ich eine eigene Klasse (automatisch abgeleitet von Object) inklusive benutzerdefinierten Konstruktor mit mindestens einem Parameter erstelle, muss eine Subklasse zwingend einen Konstruktor besitzen?
Das bedeutet, wenn ich eine eigene Klasse (automatisch abgeleitet von Object) inklusive benutzerdefinierten Konstruktor mit mindestens einem Parameter erstelle, muss eine Subklasse zwingend einen Konstruktor besitzen?
public class TestBase {
private String name;
public TestBase(String name) {
this.name = name;
}
}
public class Test extends TestBase {
}
Und siehe da - er meckert bei der Klasse Test.
Kann man sich ja auch überlegen. Wenn Test erzeugt wird, dann muss ja auch der TestBase Anteil initialisiert werden. Dazu gibt es aber nur einen Konstruktor und der benötigt nun einmal einen Parameter.
Kann man sich ja auch überlegen. Wenn Test erzeugt wird, dann muss ja auch der TestBase Anteil initialisiert werden. Dazu gibt es aber nur einen Konstruktor und der benötigt nun einmal einen Parameter.
Dazu gibt es keinen Grund. Hinterher ist man immer klüger und manchmal hat man einfach "Tomaten auf den Augen" und so. Also absolut in Ordnung! Und die Frage hilft evtl. auch noch dem Einen oder Anderen, wenn über den Thread stolpert.