尽管可以创建protected域,但是最好的方式还是将域保持为private;
你应当一直保留“更改底层实现”的权利。
然后通过protected方法来控制类的继承者的访问权限:
class Villain {
private String name;
protected void set(String name) {
this.name = name;
}
public Villain(String name) {
this.name = name;
}
public String toString() {
return "I'm Villain and my name is " + name;
}
}
public class Orc extends Villain {
private int orcNumber;
public Orc(String name, int orcNumber) {
super (name);
this.orcNumber = orcNumber;
}
public void change(String name, int orcNumber) {
set(name);
this.orcNumber = orcNumber;
}
public String toString() {
return "Orc " + orcNumber + ": " + super.toString();
}
public static void main(String args[]) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
}
}