一、java访问控制符是什么?
Java 访问控制符. Java 中可以使用 访问控制符 来保护对类、变量、方法和构造方法的访问. Java 语言中有 4 种不同的访问权限. default ( 即缺省,什么也不写 ) 在同一包内可见,不使用任何控制符. 使用对象:类、接口、变量、方法.
二、java访问控制符分为哪几种
1.public
public(公共访问权限)这是一个最宽松的访问控制级别,如果一个成员(包括成员变量、方法和构造器等)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同一个包中,是否具有父子继承关系
- public 访问控制符修饰的类、方法、构造方法和接口能够被任何其它类访问
- 如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包
- 由于类的继承性,类所有的公有方法和变量都能被其子类继承
public static void main(String[] arguments) {
// ...
}
2.private
private(当前类访问权限) 如果类里的一个成员(包括成员变量、方法和构造器等)使用private访问控制符来修饰,则这个成员只能在当前类的内部被访问。很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部
- 私有访问控制符是最严格的访问级别,声明为 private 的方法、变量和构造方法只能被所属类内部访问
- 类和接口不能声明为 private
- private 声明的变量只能通过类中公共的 getter 方法被外部类访问
- private 访问控制符的使用主要用来隐藏类的实现细节和保护类的数据
public class Logger {
private String format;
public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}
3.default
default(包(package)访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访问控制修饰,就称它为包访问权限的,default访问控制的成员或外部类可以被相同包下的其他类访问
- 默认访问控制符声明的变量和方法,对同一个包内的类是可见的
- 接口的变量都隐式声明为 public static final
- 接口的方法默认情况下访问权限为 public
- 变量和方法的声明可以不使用任何控制符
String version = "1.5.1";
boolean processOrder() {
return true;
}
4.protected
protected(子类访问权限):如果一个成员(包括成员变量、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法
- protected 访问控制符不能修饰类和接口
- 方法和成员变量能够声明为 protected
- 但是接口的成员变量和成员方法不能声明为 protected
- 子类能访问 protected 控制符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量
class AudioPlayer {
protected boolean openSpeaker(Speaker sp) {
// 实现细节
}
}
class StreamingAudioPlayer extends AudioPlayer {
protected boolean openSpeaker(Speaker sp) {
// 实现细节
}
}
5.访问控制符之间的区别
访问控制符权限对比:
访问控制符级别从小到大排序:
三、访问控制和继承
Java 中的访问控制和继承有以下规则:
- 父类中声明为 public 的方法在子类中也必须为 public
- 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private
- 父类中声明为 private 的方法,不能够被继承