java子类方法中的访问修饰符为什么要比父类的修饰符要大?

Java中,子类继承父类保证了子类对象可以替代父类对象使用。为了维护这一特性,子类方法的访问权限需大于等于父类,确保父类引用能调用子类的重写方法。例如,`Animalcat=newCat();`这样的向上转型,cat调用eat()会执行子类的实现。
摘要由CSDN通过智能技术生成

首先修饰符的从小到大的排序是private protect default public

Java中子类继承父类的是基于子类的对象可以被当做父类的对象使用,即子类对象可以替代父类对象使用。如果子类方法的访问修饰符比父类的小,那么在子类对象被当做父类对象使用时,父类对象可能无法访问子类方法,从而破坏了继承的特性。因此,为了保证子类对象可以完全替代父类对象使用,子类方法的访问修饰符必须大于等于父类的。

举个栗子:

当不匹配时,会报错如上图所示:

正因为这个访问修饰符的限定,使得java可以让父类的引用调用子类的对象,实现抽象和可扩展的目的,这就好比是可以调用子类中具有父类属性的方法。

public class UpwardTransformation {
    public static void main(String[] args) {
        //实现向上转型
        Animal cat = new Cat();
        cat.eat();
    }
}
class Animal{
    public void eat(){
        System.out.println("进食");
    }
}
class Cat extends Animal{
    public void eat(){
        System.out.println("抓老鼠");
    }
    //不应该如下写
//    private void eat(){
//        System.out.println("抓老鼠");
//    }
}

 当cat调用方法时,就会显示子类重写的内容

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值