相关疑难解决方法(0)

覆盖方法时,为什么我可以增加访问但不减少访问?

为什么Java指定覆盖方法的访问说明符可以允许比重写方法更多但不是更少的访问?例如,超类中的受保护实例方法可以在子类中公开,但不是私有的.

java inheritance access-modifiers

62
推荐指数
4
解决办法
5万
查看次数

使用限制性更强的访问修饰符覆盖方法

我想知道:为什么重写方法不能具有比重写方法更严格的访问修饰符?

例如:

class Animal{
    public void eat(){
        System.out.println("Generic Animal Eating Generically");
    }
}

class Horse extends Animal{
    public void eat(){
        System.out.println("Horse eating hay, oats, and horse treats");
    }
}
Run Code Online (Sandbox Code Playgroud)

在Horse类中,为什么我不能像这样编写代码:

private void eat(){
    System.out.println("Horse eating hay, oats, and horse treats");
}
Run Code Online (Sandbox Code Playgroud)

要么

protected void eat(){
    System.out.println("Horse eating hay, oats, and horse treats");
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
488
查看次数

标签 统计

java ×2

access-modifiers ×1

inheritance ×1