Java的访问修饰符

2020-03-27 16:09:12来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Java的访问修饰符

Java中有访问修饰符和非访问修饰符。其中访问修饰符有 public、protected 、default 、 private 四个。

??修饰符用来定义类、方法或者变量,通常放在语句的最前端。Java中有访问修饰符和非访问修饰符。其中访问修饰符有 public、protected 、default 、 private 四个。下面依照同包同类、同包不同类、同胞继承类、不同包继承类、不同包不继承类几个关系来验证修饰符权限。

public

?同包同类

package package01;
/**
 * 被测试类
 */
public class Person {
    public int age = 10;
    public int getAge() {
        return age;
    }
    public Person() {
    }

    public static void main(String[] args){
        Person person = new Person();
        System.out.print(person.age);
    }
}
//运行结果:10

?同包不同类且无继承关系

package package01;
/**
 * 同包不同类
 */
public class Student {

    public static void main(String[] args){
        Person person = new Person();
        System.out.print(person.age);
    }
}
//运行结果:10

?同包子类

package package01;
/**
 * 同包继承类
 */
public class Child extends Person {
    public static void main(String[] args){
        Person person = new Person();
        System.out.print(person.age);
    }
}
//运行结果:10

?不同包不同类且无继承关系

package package02;
/**
 * 不同包不同类 - 此时要导入被测类 import package01.Person;
 */
import package01.Person;
public class Man  {
    public static void main(String[] args){
        Person per =  new Person();
        System.out.print(per.age);
    }
}
//运行结果:10

不同包子类

package package02;
/**
 * 不同包不同类 - 此时要导入被测类 import package01.Person;
 */
import package01.Person;
public class Woman extends Person {
    public static void main(String[] args){

        Person per =  new Person();
        System.out.print(per.age);
    }
}
//运行结果:10

protected

?同包同类

//运行结果:10

?同包不同类且无继承关系

//运行结果:10

?同包子类

//运行结果:10

?不同包不同类且无继承关系

//运行结果:报错,无法访问。
//注:但是可以通过public修饰的getAge()方法获得age。

?不同包子类

//运行结果:10

default

?同包同类

//运行结果:10

?同包不同类且无继承关系

//运行结果:10

?同包子类

//运行结果:10

?不同包不同类且无继承关系

//运行结果:报错,无法访问。

?不同包子类

//运行结果:报错,无法访问。

??注:不能写default,它也不是关键字,只是用default来标识不写访问修饰符的状态。
??

private

?同包同类

//运行结果:10

?同包不同类且无继承关系

//运行结果:报错,无法访问。

?同包子类

//运行结果:报错,无法访问。

?不同包不同类且无继承关系

//运行结果:报错,无法访问。

?不同包子类

//运行结果:报错,无法访问。

总结

? public protected default private
类内
同包子类
同包不同类
不同包子类
不同包不同类
  • public没什么权限限制,跨包访问时记得导入即可。

  • protected 拥有同包或者继承关系即可访问。

  • default 在同一个包内即可访问,跨包即使有继承关系也没用。

  • private 只有在类内可以访问,同胞子类想访问也没辙。


原文链接:https://www.cnblogs.com/iiioooooblog/p/12583731.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:日志Log4j使用

下一篇:面试刷题16:synchronized和ReentrantLock的区别?