java继承与protected权限再理解

18 篇文章 0 订阅

java会继承父类中default权限以上的成员

父类的private成员不会被子类继承,子类不能访问。但是子类对象的确包含父类的私有成员。
父类的 包访问成员 继承为子类的包访问成员。就好像他们直接定义在子类中一样。
父类的 protected 成员继承为子类的protected 成员。就好像他们直接定义在子类中一样。
父类的 public 成员继承为子类的public 成员,就好像他们直接定义在子类中一样。

构造函数是不能被继承的,但是在子类中一定可以(也必须)借用父类的构造函数
java保证:除了Object类对象,每一个类的实例在构造时,先去调用父类的构造函数。
我们自定义类的构造函数的第一句一定是super(xx,…),如果不是,那么第一句就一定是this(xx,…)去调用本类的另一个构造函数。
如果子类构造函数不显式的调用super(),那么,javac会自动插入super(),也就是父类无参数的构造函数。
对于构造函数,其实类中所有构造函数都是隐式static的。很明显的例证就是 构造函数無需通過实例就可以调用。

对于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方法或属性

package test2;

public class Base {
    protected int protectedInt;
    public int publicInt;
    int defaultInt;
    protected static int pstaticInt = 2;
    void differDefPackage(){
         System.out.println("Default Method");
    }
    protected void differProPackage(){
         System.out.println("protected Method");
    }
}


package test1;
class TestNotSub{
    public void test(){
          Base b = new Base();
          b.publicInt = 3;
          Test t = new Test();
          // t.defaultInt = 3; 不可见
          //t.protectedInt = 3; 不可见
          //t.defaultInt = 2; 不可见
          //t.differProPackage();不可见
          //t.differDefPackage();不可见

    }
}
public class Test extends Base {
    public void test(){       
         Test t = new Test();
         t.protectedInt = 3;
         //t.defaultInt = 2; 不可见
         t.differProPackage();
         //t.differDefPackage();不可见

    }

}

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值