我为 Java 中的继承创建了以下难题:
动物.java
public class Animal {
private String sound;
public void roar() {
System.out.println(sound);
}
public void setSound(String sound) {
this.sound = sound;
}
}
老虎.java
public class Tiger extends Animal {
public String sound;
public Tiger() {
sound = "ROAR";
}
}
丛林.java
public class Jungle {
public static void main(String[] args) {
Tiger diego = new Tiger();
diego.roar();
diego.sound = "Hust hust";
diego.roar();
diego.setSound("bla");
diego.roar();
System.out.println(diego.sound);
}
}
输出:
null
null
bla
Hust hust
我想这种奇怪的行为正在发生,因为sound
在 Animal 中是私有的,而sound
在 Tiger 中是公共的。但是你能解释一下(并告诉我 JLS 的相关部分)为什么会发生这种情况吗?