Java语言提供了很多修饰符,主要分为以下两类:
访问修饰符
非访问修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端
public class ClassName{
private boolean myFlag;
static final double weeks = 9.5;
public static void main(String[] args) {
//方法体
}
}
Java中可以使用访问控制符来保护对类、变量、方法和构造方法的访问。
修饰符 | 当前类 | 同一包内 | 子类 | 其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | - |
default | √ | √ | - | - |
private | √ | - | - | - |
默认
不使用任何关键字,对同一个包内的类是可见的。接口中的变量都是隐式声明为public staitc fianl
,而接口中方法默认情况下权限为public。
示例
String version = "1.5.1";
boolean processOrder(){
return true;
}
private
最严格访问级别,只能被所属类访问,并且类和接口不能声明为private。
通过类中公共的getter方法被外部类访问。
主要是隐藏类的实现细节和保护类的数据。
public
可以被任何其他的类访问。
如果包不同,需要导入相应的包,类所有的公有方法和变量都能被其子类继承。
protected
static
示例 public class InstanceCounter{ private static int numInstance = 0; protected static int getCount(){ return numInstance; } private static void addInstance(){ numInstance++; } public static void main(String[] args) { System.out.println("Starting with"+InstanceCounter.getCount()+"instances"); for (int i = 0;i < 500 ;i++ ) { new InstanceCounter(); } System.out.println("Created"+ InstanceCounter.getCount()+"instances"); } }
final
示例 public class Test{ final int value = 10; //下面是声明常量实例 public static final int BOXWIDTH = 6; static final String TITLE = "Manager"; public void changeValue(){ value = 12;//这里会报错 } }
示例 public class Test{ public final void changeName(){ //方法体 } }
示例 public final class Test{ //类体 }
示例 abstract class Caravan{ private double price; private String model; private String year; public abstract void goFast();//抽象方法格式 public abstract void changeColor(); }
示例 public abstract class Superclass{ abstract void m();//抽象方法 } public Subclass extends SuperClass{ //实现抽象方法 void m(){ 方法 } }
public synchronized void showDetails(){
...
}
public class MyRunnable implements Runnable
{
private volatile boolean active;
public void run()
{
active = true;
while (active) // 第一行
{
// 代码
}
}
public void stop()
{
active = false; // 第二行
}
}
原文:https://www.cnblogs.com/bomily0212/p/12081983.html