Java修饰符
Java修饰符
Java修饰符主要分为:
- 访问类修饰符;
- 非访问类修饰符;
修饰符一般放在语句的最前端,用来定义类、变量或者方法;
访问控制修饰符
访问控制符来保护类、变量、方法的访问,Java支持以下四种:
- default(默认)在同一个包内可见,不适用任何修饰符,使用对象:类、接口、方法、变量;
- private:在同一个类内可见。使用对象为变量、方法。注意不能修饰外部类;
- public:对所有类可见。使用对象为变量、类、接口、方法;
- protected:对同一包内的类和子类可见。使用对象为变量、方法。注意不能修饰外部类;
如下:
修饰符 | 当前类 | 同一包内访问 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
私有访问修饰符private
私有访问是最严格的访问级别,被私有声明的方法、变量及构造方法只能被所属类访问,并且类、接口不能声明为private;
声明为私有变量只能通过类公共方法getter方法被外部类访问。
所以private主要用来隐藏类的实现细节,和保护类的数据;
1 public class Logger { 2 private String format; 3 public String getFormat() { 4 return this.format; 5 } 6 public void setFormat(String format) { 7 this.format = format; 8 } 9 }
该类有的私有变量format能够通过getFormat()方法来获取,也能通过setFormat()方法来设置。
公有访问修饰符public
public修饰的类、方法、构造方法、接口能够被任何其他类访问。
Java程序忠的main()方法必须用public修饰符修饰。
非访问修饰符
static修饰符:用来修饰类方法和类变量;
final修饰符:用来修饰类、变量、方法。final修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不允许修改;
abstract修饰符:用来创建抽象类、抽象方法;
synchronized和volatile修饰符:主要用户线程编程;
static修饰符:
静态变量:static修饰的对象变量为静态变量,无论实例化多少对象,变量只有一个拷贝,静态变量也就是类变量。局部变量不能声明为static变量;
静态方法:静态方法不能使用类的非静态方法。
例:
1 public class InstanceCounter { 2 private static int numinstances = 0; 3 protected static int getCount(){ 4 return numinstances; 5 } 6 private static void addInstances(){ 7 numinstances ++; 8 } 9 InstanceCounter(){ 10 InstanceCounter.addInstances(); 11 } 12 public static void main(String[] args){ 13 System.out.println("Starting with " + InstanceCounter.getCount() +" instance"); 14 for (int i=0; i<500; i++){ 15 new InstanceCounter(); 16 System.out.println(InstanceCounter.getCount() + " instance"); 17 } 18 System.out.println("created "+InstanceCounter.getCount()+" instances" ); 19 } 20 }
final修饰符
final表示最后的,最终的, 变量一旦赋值后就不能改变;
1 public class Test { 2 final int value = 10; 3 public static final int BOXWIDTH = 6; 4 static final String TITLE = "Manger"; 5 public void changeValue(){ 6 value = 12;//赋值将报错 7 } 8 }