Java 可见性重写,重写方法时,一般并不会修改方法的可见性。但我们还是要说明一点,重写时,子类方法不能降低父类方法的可见性。不能降低是指,父类如果是public,则子类也必须是public,父类如果是protected,子类可以是protected,也可以是public,即子类可以升级父类方法的可见性但不能降低。看个例子,基类代码为:
public class Base {
protected void protect(){
}
public void open(){
}
}
子类代码为:
public class Child extends Base {
//以下是不允许的,会有编译错误
//private void protect(){
//}
//以下是不允许的,会有编译错误
//protected void open(){
//}
public void protect(){
}
}
为什么要这样规定呢?继承反映的是“is-a”
的关系,即子类对象也属于父类,子类必须支持父类所有对外的行为,将可见性降低就会减少子类对外的行为,从而破坏“is-a”
的关系,但子类可以增加父类的行为,所以提升可见性是没有问题的。
酷客教程相关文章:
评论前必须登录!
注册