子类对超类中受保护的变量“私有化”的目的是什么?例如:-
abstract public class Creature{
protected String name;
abstract public String getName();
abstract public void setName(String newName);
}
public class Girafee extends Creature {
private String name;
public Girafee() {
}
@Override
public String getName() {
return this.name;
}
@Override
public void setName(String newName) {
this.name = newName;
}
}发布于 2013-12-30 12:10:27
您的程序还可以理解为:name属性的creature与giraffe的name属性不同。只是他们的拼写一样而已!
好吧,你的例子也指出了数据隐藏的某些细节。
派生类成员名称的任何使用都将始终引用定义为派生类的一部分的成员。要引用基类成员,必须使用关键字Super对其进行限定。
public class Base {
protected String s = "Hello Base";
public void get() {
System.out.println("Base string:" + s);
}
public static void main(String[] args) {
Base b = new Base();
b.get();
Derived d = new Derived();
d.get();
((Base) d).get();
Base der = new Derived();
der.get();
}}
class Derived extends Base {
protected String s = "Hello Derived";
@Override
public void get() {
System.out.println("Derived String: " + s);
}}
该方案的产出:
Base string:Hello Base
Derived String: Hello Derived
Derived String: Hello Derived
Derived String: Hello Derived
https://stackoverflow.com/questions/20838106
复制相似问题