1、final修饰的类无法继承。
错误案例: public final class test { public static void main(String[] args) { } } class text extends test()
使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的 Java 版本中,不需要使用 final 方法进行这些优化了。“
2、final修饰的方法无法覆盖。
错误案例: public class test { public static void main(String[] args) { } public final void sum(){ System.out.println("加法"); } } class text extends test{ public void sum(){ } }
3、final修饰的变量只能赋一次值
final String s="asd"; s="a"//报错
4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用指向的对象内部的数据是可以修改的。
public class test { public static void main(String[] args) { final Person p=new Person(); p.num=1; p.num=2; } } class Person{ public int num; }
5、final修饰的实例变量必须手动初始化,不能采用系统默认值。
public class test { public static void main(String[] args) { final int a =1; } }
6、final修饰的实例变量一般和static联合使用,称为常量。
fianl static int a=1;