JAVA中protected属性和方法测试
先说一些保护使用的原则,后面再看相应的例子。
受保护的属性和方法可以在这个包的子类和不是同一个包的子类
中访问,但不能由其他包的父类或子类直接访问。
测试提示:代码,这是基类
包test.base
/**
*基类、属性和方法受到保护。
*/
公共基类{
protected int testInt;
public int public int;
protected int getTestInt(){
return testInt;
}
}
这里是同一个包的2个测试代码,一个是通用类,一个是子类。
包test.base
/**
*测试同一包的子类。
*/
公共类TestSamePackageSubClass扩展Base {
public void test(){
Base b = new Base();//使用基类
b . public int = 0;//可以访问
b . testint = 1;//对受保护属性的访问成功
b . gettestint();//对受保护方法的访问成功
}
public void test2(){
public int = 0;//可以访问
testInt = 2;//在子类中,可以直接使用父类的属性
获取Testint();//父类
}
}
package test . base的方法可以直接在子类中使用;
/**
*测试同一个包的公共类。
*/
public class TestSamePackageNormal {
public void test(){
Base b = new Base();//使用基类
b . public int = 0;//可以访问
b . testint = 1;//对受保护属性的访问成功
b . gettestint();//访问受保护方法成功
}
}
这里是不同包的公共类和子类测试,一个公共类和两个子类
package test . sub 1;
导入test . base . base;
/**
*不同套餐的正常档次。
*/
class TestOtherPackageNormal {
public void test(){
Base b = new Base();//使用基类
b . public int = 0;//可以访问
b . testint = 1;//访问受保护的属性-failed
b . gettestint();//访问受保护的方法-failed
}
public void test3(){
testotherpackagesubclass b = newtestotherpackagesubclass();
b . public int = 0;//可以访问
b . testint = 3;//直接访问属性-failed
b . gettestint();//直接访问方法-失败
}
}
package test . sub 1;
导入test . base . base;
导入test . sub 2 . testotherpackage 2 subclass;
/**
*不同包的子类1。
*/
class test other package subclass Extensions Base {
public void test(){
baseb = new Base();//使用基类
b . public int = 0;//可以访问
b . testint = 1;//无法访问受保护的属性
b . gettestint();//无法访问受保护的方法
}
public void test2(){
public int = 0;//可以访问
testInt = 2;//直接使用父类的属性-success
getTestInt();//直接使用父类的方法-success
}
public void test3(){
//使用package的另一个子类。
testotherpackagesubclass 2 b = new testotherpackagesubclass 2();
b . public int = 0;//可以访问
b . testint = 1;//访问受保护的属性-failed
b . gettestint();//访问受保护的方法-failed
}
public void test 4(){
//使用package的另一个子类。
testotherpackage 2 subclass b = new testotherpackage 2 subclass();
b . public int = 0;//可以访问
b . testint = 1;//访问受保护的属性-failed
b . gettestint();//访问受保护的方法-failed
}
}
package test . sub 1;
导入test . base . base;
/**
*不同包的子类2。
*/
classtestotherpackagesubclass 2 extends base {
}
不同包的另一个子类
package test . sub 2;
导入test . base . base;
/**
*不同包的另一个子类。
*/
Public Class testother package 2 Subclass Extensions Base {
}
总结一下:
考试提示:公共属性总是可以访问的,呵呵,不用说
同一个包的子类,可以任意使用
同一个包的普通类,直接使用其实例访问
不同包的普通类,不能访问任何属性和方法
不同包的子类,不能使用属性不允许其他用途。
0条评论