当前位置: 技术问答>HTML标签参考手册
iis7站长之家
请教关于protected的访问控制
来源: 互联网 发布时间:2017-03-11
本文导语: B类继承A类,A、B类在不同的包中,请看 //A.java package a; public class A { protected int r; } //B.java package b; import a.A; public class B extends A{ public boolean isBigger(A c){ this.r = 10; //这句是合法的 c.r = 20; ...
B类继承A类,A、B类在不同的包中,请看
//A.java
package a;
public class A {
protected int r;
}
//B.java
package b;
import a.A;
public class B extends A{
public boolean isBigger(A c){
this.r = 10; //这句是合法的
c.r = 20; //这句就不行,说c.r不可见
}
}
根据我对控制protected规则的理解,r 为protected,即使A和B在不同的包里面
但,但在B类里面,A.r也应该是可见的才对。看来是我的理解有错。正确的规则
应该是怎样的?
//A.java
package a;
public class A {
protected int r;
}
//B.java
package b;
import a.A;
public class B extends A{
public boolean isBigger(A c){
this.r = 10; //这句是合法的
c.r = 20; //这句就不行,说c.r不可见
}
}
根据我对控制protected规则的理解,r 为protected,即使A和B在不同的包里面
但,但在B类里面,A.r也应该是可见的才对。看来是我的理解有错。正确的规则
应该是怎样的?
|
你对protected的理解没错,但子类对父类的引用应该用关键字super
如:super.r = 20;
如:super.r = 20;