protected:
父类的被protected润饰的类成员包内可见,而且对其子类可见。
父类与子类不在同一个包里,子类只能够接见从父类继续的protected成员,不能接见父类实例化的成员。
我们能够经由过程以下几个关于protected要领可见性的例子来进一步控制protected关键字。在遇到触及protected成员的挪用时,首先要肯定出该protected成员来自何方,其可见性局限是什么,然后就能够推断出当前用法是不是可行了
例子:
//示例一 package p1; public class Father1 { protected void f() {} // 父类Father1中的protected要领 } package p1; public class Son1 extends Father1 {} package p11; public class Son11 extends Father1{} package p1; public class Test1 { public static void main(String[] args) { Son1 son1 = new Son1(); son1.f(); // Compile OK ----(1) son1.clone(); // Compile Error ----(2) Son11 son = new Son11(); son11.f(); // Compile OK ----(3) son11.clone(); // Compile Error ----(4) } }
关于上面的示例,首先看(1)(3),个中的f()要领从类Father1继续而来,其可见性是包p1及其子类Son1和Son11,而因为挪用f()要领的类Test1地点的包也是p1,因而(1)(3)处编译经由过程。其次看(2)(4),个中的clone()要领的可见性是java.lang包及其一切子类,关于语句“son1.clone();”和“son11.clone();”,两者的clone()在类Son1、Son11中是可见的,但对Test1是不可见的,因而(1)(3)处编译不经由过程。
总结
protected是最难明白的一种Java类成员接见权限润饰词。在编程中,遇到触及protected的挪用时,首先要肯定出该protected成员来自何方,其可见性局限是什么,然后就准确无误的运用了。
以上就是java中protect是什么的细致内容,更多请关注ki4网别的相干文章!