000-Java 访问修饰符-访问权限

简介

Java 访问权限修饰符有四个:public 、protected 、默认修饰符 、private

修饰符 public protected 默认修饰符 private
同包 ×
不同包的子类 × ×
不同包的非子类 × × ×
  1. public:所修饰的类、变量、方法,在内外包均具有访问权限,Public(公有)访问权限较为宽松的一种,不仅可以被跨类访问,而且可以跨包访问。

  2. protected:这种权限是为继承而设计的。

    • protected 所修饰的成员(包括成员变量个成员方法),对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问。
    • 若子类与基类(父类)不在同一包中,那么在子类中,只有子类实例可以访问其从父类继承来的 protected 方法,而在子类中不能访问父类实例(对象)(所调用)的 protected 方法。
  3. default(包访问权限):只对同包的类具有访问的权限,外包的所有类都不能访问,default(默认访问权限“或者“包访问权限”)在默认的模式下,不需要为某个类,方法添加任何访问修饰符。但这类方式声明方法只允许在同一个包内是可访问的。

  4. private:私有的权限,可以用来修饰成员(成员变量,成员方法)。

    • private 是访问权限较为严格的修饰符。被 private 修饰的成员,只能在本类进行访问。
    • 需要说明的是,类和接口的访问方式是不能被声明为私有的。
    • private 修饰的成员变量,如果需要被其他类使用,提供相应的操作
      • 提供 get变量名() 方法,用于获取成员变量的值,方法用 public 修饰
      • 提供 set变量名(参数) 方法,用于设置成员变量的值,方法用 public 修饰

注意:要区分开 protected 权限、包访问权限,正确使用它们;

  • 当某个成员能被所有的子类继承,但不能被外包的非子类访问,用 protected;
  • 当某个成员的访问权限只对同包的类开放,包括不能让外包的类继承这个成员,用 default;

000-Java 访问修饰符-访问权限
https://flepeng.github.io/021-Java-01-course-000-Java-访问修饰符-访问权限/
作者
Lepeng
发布于
2020年2月2日
许可协议