1、final修饰的类无法继承。 2、final修饰的方法无法覆盖。 3、final修饰的变量只能赋一次值。 4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用指向的对象内部的数据是可以修改的。 5、final修饰的实例变量必须手动初始化,不能采用系统默认值。 6、final修饰的实例变量一般和static联合使用,称为常量。 public static final double PI = 3.1415926 ;
Final 修饰的类无法继承
1 2 3 4 5 6 7 8
publicclassFinal修饰的类无法继承 { }
/* final class A{} class B extends A{} */
Final 修饰的方法无法覆盖
1 2 3 4 5 6 7 8 9 10 11 12
publicclassFinal修饰的方法无法覆盖 { }
/* class A{ public final void test(){} } class B extends A{ public void test(){} } */
Final 修饰的局部变量
1 2 3 4 5 6 7 8 9
publicclassFinal修饰的局部变量 { publicstaticvoidmain(String[] args){ /* 只能赋值一次 final int i = 100; i = 200; */ } }
publicclassFinal修饰引用 { publicstaticvoidmain(String[] args){ // 无法为最终变量p分配值 final Person p = new Person(30); // 地址0x111 // p = new Person(); 地址0x123 // p = null; // final 的引用指向某个对象 // 但是内部的数据可以被修改 p.age = 40; } }