gpt4 book ai didi

java - 为什么 Java 不允许降低父方法的可见性,但允许增加父方法的可见性?

转载 作者:行者123 更新时间:2023-12-01 14:49:40 25 4
gpt4 key购买 nike

示例:

class Parent {
public void func(){
System.err.println("parnet");
}
}

class Child extends Parent {
@Override
protected void func(){
System.err.println("child");
}
}

是非法的,但如果我们切换可见性,它就是合法的。这么设计的原因是什么呢?我无法理解它的意义。

最佳答案

这是因为有人可能使用“父”对象来引用“子”对象的实例,并且降低可见性会破坏继承“契约”。

想象一下,如果您有一个扩展“Animal”的类“Cat”,该类具有 breathe()eat() 的公共(public)方法。

现在,如果您的“Cat”类将 breathe() 设为私有(private),那么拥有引用您的猫的 Animal 的人就无法对猫调用 breathe() (在 Java 中我们不能有不快乐的猫!)

关于java - 为什么 Java 不允许降低父方法的可见性,但允许增加父方法的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com