abstract class A {
private int a;
public A(int x) {
a = x;
}
public int getA() {
return a;
}
}
class B extends A {
public B(int x) {
super(x);
}
}
class TestB {
public static void main(String args[]) {
B b = new B(5);
System.out.println(b.getA());
}
}
In questa situazione quando dico B b=new B(5);
il costruttore di super-classe si chiama e la variabile di istanza privato è inizializzato a 5. Quindi, quando dico getA()
sull'oggetto class B
s' A riferiti da b
restituisce . Poiché la variabile di istanza a
di class A
è privata, non sarà ereditata dallo class B
. Quindi, dove viene creata la variabile di istanza a
(in heap). Se fosse stato un public
sarebbe stato una parte dell'istanza class B
su Heap. Anche class A
è una classe abstarct quindi non può essere istanziata.Dove è una variabile di istanza privata di una classe astratta creata nell'heap?
"Poiché la variabile di istanza a della classe A è privata, non verrà ereditata dalla classe B." - semplicemente sbagliato, ovviamente è ereditato! Semplicemente non è accessibile eccetto il metodo 'getA()' –