Ich habe einige Probleme mit der Vererbung (Student hier). Ich muss in der Lage sein, 1 geerbtes privates Feld für jede Unterklasse zu verwenden, die ich mache. Offensichtlich haben Unterklassen keinen Zugriff auf vererbte Felder. Wenn jedoch ein neues Objekt erstellt wird, ist das geerbte private Feld ein Teil dieses Objekts. Für meine Zwecke muss jede Unterklasse jedoch einen eigenen spezifischen Wert für dieses geerbte Feld haben. Mein erster Versuch sieht ungefähr so aus:Hinzufügen bestimmter Werte für geerbte Felder
Public class A {
private int x = 0;
public A(int n) {
x = n;
}
public int useX() {
return x;
}
}
Public class B Extends A {
int n = 1;
public B() {
super(n);
}
useX(); // Return 1?
}
Public class C Extends A {
int n = 2;
public B() {
super(n);
}
useX(); // Return 2?
}
jedoch meine Professoren sagen mir, dass ich auch innerhalb meiner Super-Klasse mit einem Setter-Methode werden könnte, das neue Feld zu schaffen, und von dort bin ich verwirrt. Kann mir jemand helfen, mich in die richtige Richtung zu lenken?
Der Code, den Sie gepostet haben, kompiliert nicht (es gibt kein 'n' in' B' und 'C', und Sie können vor' super' nichts machen). Wenn Sie das jedoch beheben, denke ich, dass Ihre Herangehensweise die richtige ist. Das Verwenden eines Konstruktors ist eine gute Möglichkeit, den Wert zu initialisieren, ohne unnötigen uneingeschränkten Zugriff auf den Wert zu geben. – resueman
Ich habe gerade int in den Deklarationen aufgehört. Ich habe es behoben –