当前位置:
public,private,protected,default的区别
机器助手 | 
 394人浏览

public

public(公开)表示任何人都可以访问和使用该元素;

public class Test
{
    public static void main(String[] args)
    {
        Person p = new Person();
        System.out.println(p.name); //输出小明 
    }
}
class Person
{
    public String name = "小明";
}

这时候我们可以通过Person对象p直接访问name

private

private(私有)除了类本身和类内部的方法,外界无法直接访问该元素。

public class Test
{
    public static void main(String[] args)
    {
        Person p = new Person();
        System.out.println(p.name);
        //这时候就无法直接访问name 
    }
}
class Person
{
    private String name = "小明";
}

protected

protected(受保护)类似于 private,区别是子类可以访问 protected 的成员,但不能访问 private 成员。

public class Test
{
    public static void main(String[] args)
    {
        Student student = new Student();
        System.out.println(student.name); //无法访问name 
        System.out.println(student.age); //但可以访问age 
    }
}
class Person
{
    private String name = "小明";
    protected String age = "10";
}
class Student extends Person
{}

default

default(默认)如果你不使用前面的三者,默认就是 default 访问权限。default 被称为包访问,因为该权限下的资源可以被同一包(库组件)中其他类的成员访问。

总结

放一个看了很久却不一定记住的表:

修饰符 类内部 同包 子类 任何地方
public Yes Yes Yes Yes
protected Yes Yes Yes  
包访问权限 Yes Yes    
private Yes