黑马程序员技术交流社区

标题: 关于继承中的权限问题 [打印本页]

作者: 糯米酿酒    时间: 2013-7-21 10:55
标题: 关于继承中的权限问题
本帖最后由 杨兴庭 于 2013-7-21 22:56 编辑

类继承的继承有两种权限,一种是public,一种是默认的,public权限大于默认权限,当子类public继承父类,而父类中有的成员是默认权限时,那么子类创建对象能不能够调用父类中的默认权限的成员呢?
作者: 梦想蓝色天空    时间: 2013-7-21 11:13
默认的权限是protected包级访问,也就是如果父类中的成员变量和方法是这个类型的时候,在同一个包中以及子类中都是可以访问的,如果子类覆盖父类的protected权限的方法的时候,权限只能是protected或比protected大,不能降低他的权限。。。所以只要父类的方法和属性是protected的,同一个包中的类或子类都是可以访问的
作者: yangqing    时间: 2013-7-21 11:28
protected是保护的,只有他自身或者继承他的类可以用,public是共有的 权限比protected大 子类覆盖父类时要求子类权限比父类大或相等,子类创建对象是可以调用父类的。
作者: 郭俊    时间: 2013-7-21 11:32
本帖最后由 郭俊 于 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. }
复制代码

作者: 杨兴庭    时间: 2013-7-21 11:59
子类继承父类中非私有的属性和方法。。。。。
作者: 薛鹏鹏    时间: 2013-7-21 12:16
当然能调用了,子类覆盖父类时要求子类权限比父类大或相等。 子类继承父类就是为了调用父类中的方法(除了父类中被私有的)。
子类是在父类基础上的扩展
作者: hoyouly    时间: 2013-7-21 21:26
你说的成员应该指的成员函数吧!因为成员变量是不能被继承的,如果父类的成员函数是默认的,子类继承后成为public 那么就相当于把父类的成员函数给覆盖掉了,所以子类调用也是调用子类的成员函数,而不是父类的默认成员函数!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2