Java 可见性重写

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”的关系,但子类可以增加父类的行为,所以提升可见性是没有问题的。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!