一、final
1.可以修饰属性,表示常量,其值在运行期间不允许改变。常量必须赋初始值,初始值可以在声明出,构造方法的任意一个地方赋
优点:增强程序的可读性,可维护性
2.可以修饰方法,表示该方法不能被重写(可以继承)
3.可以修饰类,表示该类不能被继承(不能产生子类)
二、static
1.可以修饰属性
类属性(静态属性):由static修饰的属性。属于类,只分配一份内存,该类的对象都可以使用
调用:类名.属性
可以被静态方法,实例方法直接访问
实例属性(没有static修饰的):属于实例对象,每一个对象都有自己的内存
调用:对象名.属性
可以被实例方法直接访问(静态方法如果要访问,必须先创建对象)
2.可以修饰方法
类方法(静态方法):可以直接访问静态成员,不能直接访问实例成员。
如果要访问实例成员,必须先创建对象,再用对象名.成员去访问。
实例方法:可以直接访问实例成员、静态成员。
三、abstract
抽象方法:由abstract修饰的,没有方法体的方法。
抽象类:由abstract修饰的类。
包含抽象方法的类必须是抽象类。
抽象类不能实例化(不能用new创建对象)。
注意:final和abstract不能同时修饰一个方法或一个类
static和abstract不能同时修饰一个方法