Я читал в учебнике, что члены класса, отмеченные как частные, не наследуются. Итак, я думал, что если класс A
имеет переменную private
x
, а класс B
будет расширять класс A
, тогда не было бы переменной x
в классе B
. Однако следующий пример показывает, что я понял, что:Частные члены и наследование
public class testdrive
{
public static void main(String[] args) {
B b = new B();
b.setLength(32);
System.out.print(b.getLength());
}
}
class A {
private int length;
public void setLength(int len) {
length = len;
}
public int getLength() {
return length;
}
}
class B extends A {
public void dummy() {
}
}
В результате 32 и я смущен, потому что это выглядит как объект с реф b
теперь имеет переменную length
и это значение равно 32. Но исх b
относится к объекту, созданному из класса B
, где переменная length
не определена. Так что же правда, класс B
наследует переменную private
length
? Если да, то что означает, что переменные private
не наследуются?
Не добавляйте «Java» в свой заголовок, вы уже отметили свой вопрос с помощью 'java'. – Pshemo