Java访问修饰符private、public和protected的用法(新手必看)
Java 中的权限修饰符主要包括 private、public 和 protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。
如果一个类的成员变量或成员方法被修饰为 private,则该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的。
如果将类的成员变量和成员方法的访问权限设置为 public,那么除了可以在本类中使用这些数据,还可以在子类和其他包的类中使用这些数据。
如果一个类的访问权限被设置为 private,这个类将隐藏其内的所有数据,以免用户直接访问它。
如果需要使类中的数据被子类或其他包中的类使用,则可以将这个类设置为 public 访问权限。如果一个类使用 protected 修饰符,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法。
这么看来,public 和 protected 修饰的类可以由子类进行访问,如果子类和父类不在同一包中,那么只有修饰符为 public 的类可以被子类进行访问。如果父类不允许通过继承产生的子类访问它的成员变量,那么必须使用 private 声明父类的这个成员变量。
下表描述了private、protected 和 public 修饰符的修饰权限:
注意,当声明类时不使用 public、protected 和 private 修饰符设置类的权限,则这个类被预设为包存取范围,即只有一个包中的类可以访问这个类的成员变量或成员方法。
例如,在项目的 com.mr 包下创建 AnyClass 类,该类使用默认的访问权限。
如果一个类的成员变量或成员方法被修饰为 private,则该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的。
如果将类的成员变量和成员方法的访问权限设置为 public,那么除了可以在本类中使用这些数据,还可以在子类和其他包的类中使用这些数据。
如果一个类的访问权限被设置为 private,这个类将隐藏其内的所有数据,以免用户直接访问它。
如果需要使类中的数据被子类或其他包中的类使用,则可以将这个类设置为 public 访问权限。如果一个类使用 protected 修饰符,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法。
这么看来,public 和 protected 修饰的类可以由子类进行访问,如果子类和父类不在同一包中,那么只有修饰符为 public 的类可以被子类进行访问。如果父类不允许通过继承产生的子类访问它的成员变量,那么必须使用 private 声明父类的这个成员变量。
下表描述了private、protected 和 public 修饰符的修饰权限:
访问包位置 | 类修饰符 | ||
---|---|---|---|
private | protected | public | |
本类 | 可见 | 可见 | 可见 |
同包其他类或子类 | 不可见 | 可见 | 可见 |
其他包的类或子类 | 不可见 | 不可见 | 可见 |
注意,当声明类时不使用 public、protected 和 private 修饰符设置类的权限,则这个类被预设为包存取范围,即只有一个包中的类可以访问这个类的成员变量或成员方法。
例如,在项目的 com.mr 包下创建 AnyClass 类,该类使用默认的访问权限。
package com.mr; class AnyClass { public void doString() { // 方法体 ... } }在上述代码中,由于类的修饰符为默认修饰符,即只有一个包内的其他类和子类可以对该类进行访问,而 AnyClass 类中的 doString() 方法却又被设置为 public 访问权限,即使这样,doString() 方法的访问权限依然与 AnyClass 类的访问权限相同。