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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 糯米酿酒 中级黑马   /  2013-7-21 10:55  /  1338 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-21 22:56 编辑

类继承的继承有两种权限,一种是public,一种是默认的,public权限大于默认权限,当子类public继承父类,而父类中有的成员是默认权限时,那么子类创建对象能不能够调用父类中的默认权限的成员呢?

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

6 个回复

倒序浏览
默认的权限是protected包级访问,也就是如果父类中的成员变量和方法是这个类型的时候,在同一个包中以及子类中都是可以访问的,如果子类覆盖父类的protected权限的方法的时候,权限只能是protected或比protected大,不能降低他的权限。。。所以只要父类的方法和属性是protected的,同一个包中的类或子类都是可以访问的
回复 使用道具 举报
protected是保护的,只有他自身或者继承他的类可以用,public是共有的 权限比protected大 子类覆盖父类时要求子类权限比父类大或相等,子类创建对象是可以调用父类的。
回复 使用道具 举报
本帖最后由 郭俊 于 2013-7-21 11:35 编辑

可以的,private的不能调用
子类覆盖父类时,必须要保证覆盖方法的权限大于等于被覆盖的方法的权限。
         【权限】——public ,private , 默认权限(小于公有大于私有) ;默认权限即protected,在当前类、同一包、子孙类都可以调用,其他包不行
  1. package it.ima.test;

  2. class Phone  
  3. {  
  4.     void show()  
  5.     {  
  6.         System.out.println("number");  
  7.     }  
  8.     void call()  
  9.     {  
  10.         System.out.println("我想给,女朋友打个电话!");  
  11.     }  
  12. }  
  13.   
  14. class NewPhone extends Phone  
  15. {  
  16.     void show()  
  17.     {  
  18.         System.out.println("name");  
  19.         super.show();      <font color="#ff0000">//这里覆盖了父类的,在里面调用父类的成员方法,同级protected</font>
  20.     }  
  21. }  
  22. class ExtendsDemo   
  23. {  
  24.     public static void main(String[] args)   
  25.     {  
  26.         NewPhone p = new NewPhone();  
  27.         p.show();   //<font color="#ff0000">同包中调用</font>
  28.     }  
  29. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
子类继承父类中非私有的属性和方法。。。。。
回复 使用道具 举报
当然能调用了,子类覆盖父类时要求子类权限比父类大或相等。 子类继承父类就是为了调用父类中的方法(除了父类中被私有的)。
子类是在父类基础上的扩展
回复 使用道具 举报
你说的成员应该指的成员函数吧!因为成员变量是不能被继承的,如果父类的成员函数是默认的,子类继承后成为public 那么就相当于把父类的成员函数给覆盖掉了,所以子类调用也是调用子类的成员函数,而不是父类的默认成员函数!!

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马