final修饰符
1.final能修饰什么?
final是一个修饰符,那么它能修饰什么呢?先看下面的代码:
看完上面的代码总结如下:
2.final的作用
常量
- 常量是一种特殊的变量,只有一次赋值的机会,一旦赋值就不能改变。
- final 类型 常量名 = 值;
注意:
因此,分配空间时不会为final修饰的实例变量赋默认值,所以在定义final修饰的变量时,必须设置初始化值。
如果在赋初始值阶段没有给final修饰的实例变量赋初始值, 那么就必须在构造方法中给它赋值。每个对象可以有值不相同的属性,属性值不能改变,可以看作只读属性。
final修饰的实例变量,可以赋初始值,也可以在构造方法中 赋值,但是不能同时赋值,也不能同时不赋值。如果多个对象的属性值相同且不能修改,不如定义成类变量。
final修饰类变量:
- 类变量在类加载的时候被创建
- 不能在构造方法中赋值
- 可以赋初始值
- 可以在静态初始代码块中赋值
最终方法
- 使用final修饰符修饰的方法叫做最终方法
- 可以被子类继承
- 不能被子类覆盖
最终类
- 使用final修饰符修饰的类叫做最终类
- 不能被其它类继承
- 最终类的所有方法都是最终方法
abstract修饰符
1.abstract能修饰什么?
还是先看一段代码:
看完上面的代码总结如下:
2.abstract的作用
抽象类
- 使用abstract修饰符修饰的类叫做抽象类
- 能够声明引用
- 不能创建对象
- 可以被继承
抽象方法
- 使用abstract修饰符修饰的方法叫做抽象方法
- 只有方法的声明,没有方法的实现
总结:
- 如果一个类中有抽象方法,那么这个类必须是抽象类
- 抽象类中未必有抽象方法
- 如果一个类继承了抽象类,它自己不想做为抽象类,就必须实现父类中所有声明的抽象方法(方法覆盖)。
- 抽象类可以有构造方法,可以通过继承的子类super调用
修饰符总结
- static、final和abstract都能修饰方法。
- static、final和abstract都不能修饰构造方法。private、(package private)、protected和public都能修饰属性、方法和构造方法。
- 访问权限修饰符可以和其它修饰符搭配使用。
- 不能同时使用两个以上访问权限修饰符。
- final和abstract不能同时使用。
- static和abstract不能同时使用。
- private和abstract不能同时使用。
- 除此以外,可以同时使用。