包中类的继承关系及获得属性的权限


1、当不同包中的不同类且他们之间没有继承关系时,一个类只能获得另一个的由public修饰的成员,且这个类必须是由public修饰的,如果没有修饰将无法获得类中的任何属性

例如class  A{ }和public class B{} 且他们是不同包中的类,A可以获得B中由public修饰的成员但是B不能获得A中由public修饰的成员

2、不同包中的不同类且他们之间存在继承关系,那么子类可以访问父类由public和protected修饰的成员,并且父类必须是由public修饰的,但只能在子类内部访问父类的protected成员,且用super调用,如果在其他类(同一个包中的)中创建这个子类那么只能访问到此子类的父类中的public成员,当父类中由构造函数定义构造函数时最低权限是protected,否则子类编译不能通过

例如在一个包中有类A如下

public class A{//这个类必须是public否则子类无法访问
      int a=1;//定义友好变量
       protected int b=1;//定义保护变量
       public int c;//定义公有变量
       private int d;//定义私有变量
        protected  A(int a){}//这个地方的属性最低是protected否则子类无法获得构造函数而编译出错
        void run()1{ }//定义友好方法
       protected void run()2{}//定义保护方法
       public void run()3{}//定义公有方法
      private void run()4{}//定义私有方法
 }

在另一个包中

class C{
      new B().b;//这句是错误的,以为再别的类中只能访问到父类中的public成员
}
class B extends A{
      B(int a){
          super(a);
          super.b;//这句是没有语法错误的,但是在c类中调用b就会出错
   }   //子类中可以不加protected和public编译不会出错
}

3、在同一个包中的不同类且他们没有继承关系,那么一个类可以访问到另一个类除私有成员以外其他所有成员,且此时的父类可以不加public修饰。

4、在同一个包中存在继承关系的类和第三种是一样的。

5、同一个可以访问所有成员

对于此问题主要问题就在第二个上,因为继承和你继承的有出入,且继承的在其他类创建对象只能获得父类中的public成员,其他的到没有什么。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值