java 访问权限与继承的关系,以及访问的具体含义

时间:2024-05-19 14:41:08

此博客仅为个人笔记,思路文字如有侵权,可以删除????

  • private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
  • default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问
  • protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护访问权限”。被其修饰的属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
  • public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅同一个包中可以跨类访问,而且 允许跨包访问
同一个类中 同一个包中 不同包的子类中 在不同包的非子类中
public
protected ×
× ×
private × × ×

实验验证:

1.创建了5个类 ,A,B1,B2,C,D,其中A,B1,B2在一个包里,C,D在一个包里,如下java 访问权限与继承的关系,以及访问的具体含义
2.A中定义了四个成员变量和四个方法,权限不同:
java 访问权限与继承的关系,以及访问的具体含义
3.B1类与A在同一个包中

  • 若采用实例化方式访问A,则除了private的方法和变量外均可访问
  • 若采用直接访问的方法,均不能访问

java 访问权限与继承的关系,以及访问的具体含义
java 访问权限与继承的关系,以及访问的具体含义
4.B2类与A在同一个包中,B2继承A

  • 若采用实例化方式访问A,则除了private的方法和变量外均可访问
  • 若采用直接访问的方法,则除了private的方法和变量外均可访问
    java 访问权限与继承的关系,以及访问的具体含义
    java 访问权限与继承的关系,以及访问的具体含义
    5.C与A不在一个包中,C继承A
  • 若采用实例化方式访问A,则除了public的方法和变量外均不可访问
  • 若采用直接访问的方法,可以访问public和protected的方法和变量
    java 访问权限与继承的关系,以及访问的具体含义
    6.D与A不在一个包中
  • 若采用实例化方式访问A,则除了public的方法和变量外均不可访问
  • 若采用直接访问的方法,均不可访问
    java 访问权限与继承的关系,以及访问的具体含义

总结

  • 实例化方式访问:无论两个类是否是继承关系,都与继承无关。只取决于是否在同一个包中,若同一个包中,则除了private以外的所有方法和成员变量均可以访问;不在同一个包中只能访问public
  • 直接访问:
    如果没有关系:什么都不能访问
    如果是继承关系:同一个包中则除了private均可访问,不同包中除了private和default均可访问