2.2 以下例子说明:protected是不同包中对子类可见,对非子类不可见。
例1.2.2.a:---本例为正常用法。
package p1;
public class A {
protected int i;
protected void printIProtected() {
System.out.println("i=" + i);
}
}
package p2;
import p1.A;
class B extends A {
void printIInB() {
System.out.println("in B i=" + i);//protected是不同包中对子类(Test)可见,马 克-t o-w i n
printIProtected();
}
}
public class Test {
public static void main(String[] args) {
A a=new A();
// a.i=7;//报错, 注意这里不能直接用
// a.printIProtected();//报错, 注意这里不能直接用
B b = new B();
// b.i = 10;//报错,Test不是A子类,非子类不能访问protected
// b.printIProtected();//报错,Test不是A子类,非子类不能访问protected
b.printIInB();
}
}
结果:
in B i=0
i=0
例1.2.2.b:---本例为非正常用法,通常不直接访问protected方法。比如b.printIProtected();
package p1;
public class A {
protected int i;
protected void printIProtected() {
System.out.println("i=" + i);
}
}
package p2;
import p1.A;
public class Test extends A {
void printIInB() {
System.out.println("in B i=" + i);//protected是不同包中对子类(Test)可见,马 克-t o-w i n
printIProtected();
}
更多请见:https://blog.youkuaiyun.com/qq_44639795/article/details/103116872
本文通过两个示例详细解释了Java中protected访问修饰符的用途及其在不同包内对子类和非子类的可见性限制。通过实例演示了正确和错误的访问方式,并提供了相关链接供进一步学习。
432

被折叠的 条评论
为什么被折叠?



