final关键字主要用在三个地方:变量、方法、类.
- 对于一个
final变量,如果是基本数据类型的变量,则其数值一旦初始化之后就无法修改; 如果是引用类型变量,则对其初始化之后就不能再让其指向另外一个对象,但该引用所指向的对象的内容是可以发生变化的。
public class Test {
private final int i = 0;
public Test(){
i = 1; //错误
final Object obj = new Object();
obj = new Object(); //错误
}
}
- 当用
final修饰一个类时,表名这个类不能被继承。final类中所有的成员方法都会被隐士地指定为final方法。
final public class Animal {
public Animal(){
}
}
public class Dog extends Animal {
}
private方法都隐式地指定为final。
public class Animal {
public Animal(){
}
/**
* 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、
* 属于子类本身的方法,编译正常
private final void getName(){
}
*/
/* 因为pblic修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错
*/
public final void getName(){
}
}
public class Dog extends Animal {
public void getName(){
}
}
如有错误,欢迎指出