java继承与protected权限再理解

您所在的位置:网站首页 private类能被继承吗 java继承与protected权限再理解

java继承与protected权限再理解

2023-10-20 15:22| 来源: 网络整理| 查看: 265

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();不可见 } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3