面向对象-final关键字
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.final关键字概述
继承的弊端就是打破了封装性,如果而已继承并进行不正确的覆盖,会导致原功能的错误。
final作为一个修饰符:
final可以修饰类,方法,变量;
final修饰的类不可用被继承;
final修饰的方法不可以被覆盖;
final修饰的变量时一个常量,只能被赋值一次。
什么时候将变量修饰为final呢?
针对程序中的一些不会发生变化的数据,也就是常量,例如3.1415926。直接使用这个值不利于阅读,所以一般情况下,都会给概述起一个容易阅读的名称,如"final double PI = 3.1415926;"
二.final关键字实战案例
package cn.org.yinzhengjie.extemdPackage; /** * 定义父类 * @author 尹正杰 * */ public class Father { final double PI = 3.1415926; final void sayHello() { System.out.println("Father sayHello..."); } }
package cn.org.yinzhengjie.extemdPackage; /** * 定义子类 * @author 尹正杰 * */ public class Son extends Father { /* * 由于Son的父类对sayHello方法用final关键字修饰,因此子类无法进行覆盖(override)操作 */ // void sayHello() { // System.out.println("Son sayHello..."); // } void showMe() { System.out.println("Son showMe..."); } }
package cn.org.yinzhengjie.extemdPackage; /** * 测试继承类 * @author 尹正杰 */ public class ExtendDemo { public static void main(String[] args) { Son son = new Son(); son.sayHello(); son.showMe(); System.out.println(son.PI); } }