Java权限修饰符之protected
一、可以修饰的成员
1、protected 可以修饰变量
public class ProtectedTest {
//protected 修饰的变量
protected String str = "hello world";
public static void main(String[] args) {
System.out.println("hello world");
}
}
2、protected可以修饰方法
public class ProtectedTest {
//protected 修饰的方法
protected void test(){
System.out.println("hello world");
}
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
pt.test();
}
}
3、protected可以修饰构造方法
public class ProtectedTest {
//protected 修饰的构造方法
protected ProtectedTest(){
System.out.println("hello world");
}
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
}
}
总结:protected 是不能修饰类、代码块,可以修饰变量、方法、构造方法
二、访问范围
1、本类中访问
public class ProtectedTest {
//protected 修饰的变量
protected String str = "hello world";
//protected 修饰的方法
protected void test(){
System.out.println("hello world");
}
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
System.out.println(pt.str);
pt.test();
}
}
2、同包中的类访问
package mjl20200511;
public class ProtectedTest {
//protected 修饰的变量
protected String str = "hello world";
//protected 修饰的方法
protected void test(){
System.out.println("hello world");
}
}
package mjl20200511;
/**protected 修饰的成员在同包的类中可以正常访问*/
public class TestMain {
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
System.out.println(pt.str);
pt.test();
}
}
3、子类中访问
package mjl20200511;
public class ProtectedTest {
//protected 修饰的变量
protected String str = "hello world";
//protected 修饰的方法
protected void test(){
System.out.println("hello world");
}
}
package mjl20200511.mjl;
import mjl20200511.ProtectedTest;
public class ProtectedTestSub extends ProtectedTest {
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
//System.out.println(pt.str);//访问不到
//pt.test();//访问不到
ProtectedTestSub ptb = new ProtectedTestSub();
System.out.println(ptb.str);//可以访问
ptb.test();//可以访问
}
}
4、其它类中访问
package mjl20200511;
public class ProtectedTest {
//protected 修饰的变量
protected String str = "hello world";
//protected 修饰的方法
protected void test(){
System.out.println("hello world");
}
}
package mjl20200511.mjl;
import mjl20200511.ProtectedTest;
public class ProtectedTestSub extends ProtectedTest {
}
package mjl20200511.mjl;
import mjl20200511.ProtectedTest;
public class ProtectedTestOther {
public static void main(String[] args) {
ProtectedTest pt = new ProtectedTest();
//System.out.println(pt.str);//访问不到
//pt.test();//访问不到
ProtectedTestSub pts = new ProtectedTestSub();
//System.out.println(pts.str);//访问不到
//pts.test();//访问不到
}
}
总结:
1、被protected修饰的成员,在本类中是可以正常访问的。
2、被protected修饰的成员,在同包的类中是可以正常访问的。
3、被protected修饰的成员,在子类中如果子类与父类同包,则子类对象和父类对象都可以正常访问,如果子类与父类不同包,则子类对象可以正常访问,父类对象不可以访问。
4、被protected修饰的成员,在其他类中是不可以访问的。
版权声明:本文为mjl_1451100634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。