一、特点
1、由于继承,方法可以重写,所以父类的功能就会被子类覆盖
2、有时候我们不想子类覆盖父类的功能,这时候我们可以使用final关键字3、final可以修饰:类、变量,方法。4、final修饰类,该类不能被继承5、final修饰变量,该变量不能被修改,因为这个变量是常量了6、final修饰方法,该方法不能被重写
二、案例分析
1 package finals; 2 /** 3 * final关键字,案例1 4 * @author zhongfg 5 * @date 2015-06-16 6 */ 7 class Fu { 8 9 public final int num = 10;10 public final void secretMethod() {11 System.out.println("这里是绝密文件,不能修改");12 }13 14 public void show(){15 16 }17 }18 19 class Zi extends Fu {20 21 // 报错,final修饰的方法不能重写22 /*public void secretMethod() {23 System.out.println("我就是要修改,怎么的");24 }*/25 26 public void show() {27 // num = 100; 报错,final修饰的变量不能被修改28 System.out.println(num);29 }30 }31 32 public class FinalDemo {33 34 public static void main(String[] args) {35 36 Fu fu = new Zi();37 fu.secretMethod();38 fu.show();39 }40 }41 42 运行结果:43 这里是绝密文件,不能修改44 10
1 package finals; 2 /** 3 * 面试题:final修饰局部变量问题 4 * 基本类型: 5 * 基本类型的值不能改变 6 * 引用类型: 7 * 引用类型的地址值不能改变,但是该对象的堆内存地址值可以改变 8 * @author zhongf 9 * @date 2015-06-1610 */11 class Student {12 13 int num = 10;14 }15 16 public class FinalInterview {17 18 public static void main(String[] args) {19 20 //局部变量是基本数据类型21 int x = 1;22 x = 2;23 System.out.println(x);24 25 final int y = 3;26 // y = 4; 报错,无法为最终变量赋值27 System.out.println(y);28 29 System.out.println("---------------");30 31 //局部变量是引用数据类型32 Student s = new Student();33 s.num = 20;34 System.out.println(s.num);35 36 final Student ss = new Student();37 ss.num = 30;38 System.out.println(ss.num);39 40 // ss = new Student(); 报错,无法为最终变量赋值41 }42 }43 44 运行结果:45 246 347 ---------------48 2049 30