📌  相关文章
📜  在Java访问受保护的成员(1)

📅  最后修改于: 2023-12-03 15:23:24.904000             🧑  作者: Mango

在Java访问受保护的成员

在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成员。