Я озадачен этим примером наследования, найденным в викторине из курса Coursera Java:
- класс B является подклассом класса A
- класс B
getPrefix()
метод переопределяет класс 'A метод - класс B
number
атрибут переопределяет класс' атрибут * A
class ClassA {
protected int number;
public ClassA() {
number = 20;
}
public void print() {
System.out.println(getPrefix() + ": " + number);
}
protected String getPrefix() {
return "A";
}
}
class ClassB extends ClassA {
protected int number = 10;
protected String getPrefix() {
return "B";
}
}
public class Quizz {
public static void main(String[] args) {
ClassB b = new ClassB();
b.print();
ClassA ab = new ClassB();
ab.print();
}
}
Когда мы запускаем эту программу, выводится результат:
B: 20
B: 20
Однако вместо этого я ожидал этого результата:
B: 10
B: 10
Можете ли вы объяснить, почему печатается атрибут класса A number
, а не класса B
?