关键字:final
- 在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
- final标记的类不能被继承。提高安全性,提高程序的可读性。
- String类、System类、StringBuffer类
- final标记的方法不能被子类重写。
- 比如:Object类中的getClass()。
- final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
- final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,然后才能使用。
final double MY_PI = 3.14;
final修饰类
final class A{ } class B extends A{ //错误,不能被继承 }
- 中国古代,什么人不能有后代,就可以被final声明,称为“太监类”!
final修饰方法
class A { public final void print() { System.out.println("A"); } } class B extends A { public void print() { // 错误,不能被重写。 System.out.println("尚硅谷"); } }
final修饰变量——常量
class A { private final String INFO = "atguigu"; //声明常量 public void print() { //The final field A.INFO cannot be assigned //INFO = "尚硅谷"; } }
- 常量名要大写,内容不可修改。——如同古代皇帝的圣旨。
- static final:全局常量
关键字final应用举例
public final class Test { public static int totalNumber = 5; public final int ID; public Test() { ID = ++totalNumber; // 可在构造器中给final修饰的“变量”赋值 } public static void main(String[] args) { Test t = new Test(); System.out.println(t.ID); final int I = 10; final int J; J = 20; J = 30; // 非法 } }
抽象类与抽象方法
- 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。