Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。
私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。
被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。
protected 需要从以下两个点来分析说明:
子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。
子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。
父类中声明为 public 的方法在子类中也必须为 public。
父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
父类中声明为 private 的方法,不能够被继承。
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
static的使用:
1.可以用来修饰常量;
2.可以用来修饰成员变量,通过static关键字来达到全局的效果。静态变量 属于类,在内存中只有一个副本。只要静态变量所在的类被加载,这个静态类就会被分配空间,因此就可以被使用。对静态变量的引用有两种方式,分别为“类.静态变量”和“对象.静态变量”。实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,他在内存中存在多个副本,只能用“对象.静态变量”的方式来引用。静态变量只有一个,被类所拥有,所有的对象都共享这个静态变量。
3.可以用来修饰成员方法,static方法是属于类的方法,不需要创建对象就可以被使用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用。static方法中不能使用this和super关键字,不能调用非静态方法,只能访问静态的成员变量和方法。static谁能实现单例模式,单例模式的特点是该类只有一个实例。
4.static可以用来修饰代码块,static代码块在类中是独立与成员变量和成员函数的代码块,他不在任何一个方法体内,JVM在加载里的时候会执行static代码块,如果有多个static代码块,JVM将会按顺序来执行,static代码块经常会被用来初始化静态变量,需要注意的是static代码块只会被执行一次。
5.static可以用来修饰内部类static内部类是指被申明为static的内部类,他可以不依赖于外部类实例对象而被实例化,而通常的内部类需要外部类实例化后才能实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态成员方法,只有内部类才能被申明为static。
final表示最终的,final可以用来修饰普通方法、属性、变量、形参、常量、类、内部类。
如果修饰普通方法,表示该方法不能被重写;
如果修饰属性、变量、形参,表示值不能改变;
如果修饰类,表示类不能被继承。
属性、变量、形参、常量的名字中的存储的内容是不能改变的;