hurtCat 2019-10-01 18:17 采纳率: 0%
浏览 572
已采纳

protected 修饰符与继承

问题1

//父类
package com.itheima.day_06;

public class Supper {
    protected void show() {
        System.out.println("this is Supper show");
    }
}

//子类
package com.itheima.day_07;

import com.itheima.day_06.Supper;

public class Subber extends Supper {
    public static void main(String[] args) {
        Supper sub = new Subber();
        sub.show();//报错,说明调用的是父类的方法,sub的动态绑定哪里去了?
    }
}

子类调用show()时实际调用的是父类的方法?我查看了字节码文件,发现子类字节码中没有该方法,在子类调用该方法,常量池保存的方法符号引用却是指向子类的。

问题2

//父类
package com.itheima.day_06;

public class Supper {
    protected static void show() {
        System.out.println("this is Supper show");
    }
}
//子类
package com.itheima.day_07;

import com.itheima.day_06.Supper;

public class Subber extends Supper {
    public static void main(String[] args) {
        Supper.show();//不报错???
    }
}

为什么子类可以直接调用父类的protected static 方法?

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-10-01 23:10
    关注

    对于Protected的权限理解
    But a subclass in another package can access the protected members in the super-class via only the references of subclass or its subclasses. A subclass in the same package doesn’t have this restriction. This ensures that classes from other packages are accessing only the members that are part of their inheritance hierarchy.
    例如:
    在不是一个包的情况之下:
    子类的引用在子类中可以调用父类的Protected方法或属性,非子类的话只能调用public方法或属性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题