【java基础】访问权限修饰符

访问修饰符

通过控制方法、属性的不同访问权限,对外部暴露必要的接口,提供给客户程序员使用。将外部的功能和内部实现分隔。客户程序员无需关心内部实现。
这样在以后修改内部的具体实现细节(比如HashMap的优化),不会影响到客户程序员的使用。

public

所有的包都可以访问public属性

protected

只有同一个包下的类可以访问,或者虽然不在同一包下,但是继承父类,就可以访问到protected属性。

friendly

必须在同一个包下,才能访问到默认属性。即使不在同一个类也可以访问到。

private

只能在当前类下能够访问


可结合如下代码理解

package study.basic.demo01;

public class Person {
    public String publicName;

    protected int protectedAge;

    int fridenlyHight;

    private String privateId;

    public static void main(String[] args) {
        Person person = new Person();
        person.publicName="json";
        person.protectedAge=12 ;
        person.fridenlyHight=180;
        person.privateId="123123";//在同一个包下的同一个类,所有属性都可以访问到
    }
}

class Jake{
    public static void main(String[] args) {
        Person person = new Person();
        person.publicName="jake";
        person.protectedAge=23;
        person.fridenlyHight=172;//在同一个包下,但不是同一个类。可以访问到friendly

    }
}



package study.basic.demo02;

import study.basic.demo01.Person;

public class Animal {
    public static void main(String[] args) {
        Person person = new Person();
        person.publicName="jane";//不在同一个包下,只能访问到 public
    }
}

class Tom extends Person{
    public static void main(String[] args) {
        Tom tom = new Tom();
        tom.publicName="tom";
        tom.protectedAge=12;//不在同一个包下,但是继承了person类,可以访问到protected
    }
}

原文地址:https://www.cnblogs.com/HappyKnockOnCode/p/15236084.html