📅  最后修改于: 2023-12-03 15:23:24.904000             🧑  作者: Mango
在Java中,有四种访问控制符:public、protected、private和default。在这四种访问控制符中,protected是限制访问的,它不允许其他包中的类直接访问,但是允许子类访问。下面详细介绍在Java中如何访问受保护的成员。
在Java中,protected访问控制符可以用于类、成员变量和成员方法上。当一个成员被声明为protected时,它在当前类、同一个包中的类和所有子类中都是可访问的。
在同一个包中的类可以直接访问protected成员。
package com.example.demo;
public class TestClass {
protected int num;
public void test() {
System.out.println(num);
}
}
package com.example.demo;
public class MainClass {
public static void main(String[] args) {
TestClass tc = new TestClass();
tc.num = 10;
tc.test();
}
}
子类可以直接访问父类中的protected成员。
package com.example.demo;
public class ParentClass {
protected int num;
public void test() {
System.out.println(num);
}
}
package com.example.demo;
public class ChildClass extends ParentClass {
public void testChild() {
num = 20;
test();
}
}
package com.example.demo;
public class MainClass {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
cc.testChild();
}
}
在不同包中的子类可以直接访问父类中的protected成员。
package com.example.demo1;
public class ParentClass {
protected int num;
public void test() {
System.out.println(num);
}
}
package com.example.demo2;
import com.example.demo1.ParentClass;
public class ChildClass extends ParentClass {
public void testChild() {
num = 30;
test();
}
}
package com.example.demo;
public class MainClass {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
cc.testChild();
}
}
protected访问控制符主要用于限制访问,但是允许子类访问。在同一个包的类中可以直接访问protected成员,在子类中也可以直接访问父类中的protected成员。在不同包中的子类也可以直接访问父类中的protected成员。