java 中的protected权限
2011年09月01日
凡是被protected修饰的变量都被称为保护变量,除了允许在本类内部访问之外,还允许它的子类以及同一个包中的其他类访问。
package test
public class declareProtected{
protected int protectedVar=10;
void change(){
protectedVar=20;
}
}
下面这个otherClass类也定义在test包中,与declareProtected类同属于一个包
package test
public class otherClass{
void change(){
declareProtected ca=new declareProtected();
ca.protectedVar=20;//合法
}
}
下面这个deriveClass类是declareProtected的子类。它不在test包中。它也可以访问保护变量protectedVar但是只能通过继承的方式访问
import test;
public class deriveClass extends declareProtected{
void change(){
protectedVar=30;//合法,改变的是deriveClass 从declareProtected中所继
//承的protectedVar
}
}
子类如果不在父类的包中,是无法通过“对象.变量名”的方式来访问protected类型的成员变量,比如下面的访问时非法的
import test;
public class deriveClass extends declareProtected{
void change(){
declareProtected ca=new declareProtected();
ca.protectedVar=30;
}
}
2011年09月01日
凡是被protected修饰的变量都被称为保护变量,除了允许在本类内部访问之外,还允许它的子类以及同一个包中的其他类访问。
package test
public class declareProtected{
protected int protectedVar=10;
void change(){
protectedVar=20;
}
}
下面这个otherClass类也定义在test包中,与declareProtected类同属于一个包
package test
public class otherClass{
void change(){
declareProtected ca=new declareProtected();
ca.protectedVar=20;//合法
}
}
下面这个deriveClass类是declareProtected的子类。它不在test包中。它也可以访问保护变量protectedVar但是只能通过继承的方式访问
import test;
public class deriveClass extends declareProtected{
void change(){
protectedVar=30;//合法,改变的是deriveClass 从declareProtected中所继
//承的protectedVar
}
}
子类如果不在父类的包中,是无法通过“对象.变量名”的方式来访问protected类型的成员变量,比如下面的访问时非法的
import test;
public class deriveClass extends declareProtected{
void change(){
declareProtected ca=new declareProtected();
ca.protectedVar=30;
}
}