Java语言提供了不少修饰符,主要分为两类:访问修饰符,非访问修饰符
修饰符用来定义类、方法或者变量,一般放在语句的最前端。咱们经过下面的例子来讲明:
public class className {
// ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
// 方法体
}
。。。
访问控制修饰符
-Java中,可使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不一样的访问权限。
-默认的,也称为default,在同一包内可见,不使用任何修饰符。
-私有的,以private修饰符指定,在同一类内可见。
-共有的,以public修饰符指定,对全部类可见。
-受保护的,以protected修饰符指定,对同一包内的类和全部子类可见。
1. 默认访问修饰符-不使用任何关键字
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认状况下访问权限为public。 http://www.iis7.com/a/lm/fwqdq/ IIS7服务器大全
实例:
以下例所示,变量和方法的声明能够不使用任何修饰符。
String version = "1.5.1";
boolean processOrder() {
return true;
}
2. 私有访问修饰符-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;
}
}
实例中,Logger类中的format变量为私有变量,因此其余类不能直接获得和设置该变量的值。为了使其余类可以操做该变量,定义了两个public方法:getFormat() (返回format的值)和setFormat(String)(设置format的值)
3. 公有访问修饰符-public
被声明为public的类、方法、构造方法和接口可以被任何其余类访问。
若是几个相互访问的public类分布在不一样的包中,则须要导入相应public类所在的包。因为类的继承性,类全部的公有方法和变量都能被其子类继承。
如下函数使用了公有访问控制:
public static void main(String[] arguments) {
// ...
}
Java程序的main() 方法必须设置成公有的,不然,Java解释器将不能运行该类。
4. 受保护的访问修饰符-protected
被声明为protected的变量、方法和构造器能被同一个包中的任何其余类访问,也可以被不一样包中的子类访问。
Protected访问修饰符不能修饰类和接口,方法和成员变量可以声明为protected,可是接口的成员变量和成员方法不能声明为protected。
子类能访问Protected修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。
下面的父类使用了protected访问修饰符,子类重载了父类的openSpeaker()方法。
class AudioPlayer {
protected boolean openSpeaker(Speaker sp) {
// 实现细节
}
}前端
class StreamingAudioPlayer {
boolean openSpeaker(Speaker sp) {
// 实现细节
}
}
若是把openSpeaker()方法声明为private,那么除了AudioPlayer以外的类将不能访问该方法。若是把openSpeaker()声明为public,那么全部的类都可以访问该方法。若是咱们只想让该方法对其所在类的子类可见,则将该方法声明为protected。
。。
访问控制和继承
请注意如下方法继承的规则:
-父类中声明为public的方法在子类中也必须为public。
-父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
-父类中默认修饰符声明的方法,可以在子类中声明为private。
-父类中声明为private的方法,不可以被继承。服务器