A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kj1989 中级黑马   /  2014-1-1 17:23  /  820 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 kj1989 于 2014-1-2 18:34 编辑

为什么覆盖方法时不能使用比父类中被覆盖的方法更严格的访问权限?我觉得和多态性有一定关系,当时具体什么关系,现在有点模糊。另外还和哪些有关联呢?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
举个栗子吧~

  1. // 假设子类中覆盖父类的方法可以有更严格的访问权限

  2. // 测试类
  3. public class Test {
  4.     Parent p = new Child();
  5.     p.sayHello();     // 因为动态绑定的机制,运行时调用的是子类方法,但子类该方法是 private 的,这样就出问题了
  6. }

  7. // 父类
  8. class Parent {
  9.     public void sayHello() {
  10.         System.out.println("Hello, I am Parent!");
  11.     }
  12. }

  13. // 子类
  14. class Child {
  15.     private void sayHello() {
  16.         System.out.println("Hello, I am Child!");
  17.     }
  18. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马