访问修饰符 public private protected
1.public
默认修饰符为public。公共的。
2.private
–私有访问修饰符是最严格的访问级别,以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。
–Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。
–声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
3.protected
–子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问。
–子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
非访问修饰符 static final abstract synchronized 和 volatile
1.static
–用来修饰类变量:static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
–用来修饰类方法:静态方法不能使用类的非静态变量。
public class InstanceCounter {
private static int numInstances = 0;
protected static int getCount() {
return numInstances;
}
private static void addInstance() {
numInstances++;
}
InstanceCounter() {
InstanceCounter.addInstance();
}
public static void main(String[] arguments) {
System.out.println("Starting with " +
InstanceCounter.getCount() + " instances");
for (int i = 0; i < 500; ++i){
new InstanceCounter();
}
System.out.println("Created " + InstanceCounter.getCount() + " instances");
}
}
输出结果:Starting with 0 instances Created 500 instances
2.final
最终的,最后的。final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
–final 修饰符通常和 static 修饰符一起使用来创建类常量。
3.abstract
用来创建抽象类和抽象方法。
–抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
–一个类不能同时被 abstract 和 final 修饰。
–如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
–抽象类可以包含抽象方法和非抽象方法。
4.synchronized 和 volatile
主要用于线程的编程。