È passato un po 'di tempo da quando ho lavorato su qualsiasi cosa in Java, e ho davvero un'esperienza molto limitata nel farne qualcosa, per la maggior parte scrivo in linguaggi specifici di livello superiore, linguaggi di scripting e tipo.Modifica dei valori delle variabili nelle sottoclassi?
Suppongo di non capire il concetto alla base dell'assegnazione del valore predefinito dei membri di una classe.
// parent
public class A {
protected int value = 0;
public void print() {
System.out.println(value);
}
}
// child class
public class B extends A {
int value = 1;
}
Per farla breve, la creazione di un'istanza di B e chiamando print() stampa il valore originale di "valore" impostato in A.
suppongo piuttosto che essere un qualche tipo di identificatore generale " una variabile denominata 'valore' di proprietà di questo oggetto, "la funzione definita su A ha un contesto completamente diverso per" valore "rispetto a B.
Quale altro metodo è lì per organizzare le varianti comuni di una certa classe ma creare un figlio di detta classe? Una specie di oggetto fabbrica? Non sembra che le interfacce siano la risposta perché allora devo ridefinire ogni singolo aspetto della classe, quindi non ho guadagnato nulla nel farlo.
Qualsiasi aiuto sarebbe molto apprezzato, grazie.
Dichiarare 'value' in' B' si nasconde il 'value' in' A'.È necessario creare un costruttore per 'B' e impostare' value = 1' lì. – azurefrog
Vedere [nascondere i campi] (http://docs.oracle.com/javase/tutorial/java/IandI/hidevariables.html) per ulteriori informazioni. – azurefrog
Il nascondiglio del campo non è il colpevole di questa domanda. Con il campo nascosto, B.value nasconderebbe A.valore. Invece, l'OP sta ottenendo A.value e si aspetta B.valore. –