在最后的关键字是最后这是我们无法改变。
我们可以将final关键字用于变量,方法和类。
如果我们使用final关键字的继承也就是如果我们宣布与任何方法final关键字在基类这样的实现最终的方法是一样的,如派生类。
如果任何其他类扩展了该子类,则可以在我们想要的任何子类中声明最终方法。
//声明父类 class Parent { /* 建字符串类型的最终变量pa,即这个变量的值在整个过程中都是固定的,派生类或不覆盖*/ final String pa = "Hello , We are in parent class variable"; } //通过扩展父类来声明子类 class Child extends Parent { /* 创建字符串类型的变量ch,即这个变量的值不是始终固定的,派生类或覆盖*/ String ch = "Hello , We are in child class variable"; } class Test { public static void main(String[] args) { //创建父类对象 Parent p = new Parent(); //通过父对象调用变量pa- System.out.println(p.pa); //创建Child类对象 Child c = new Child(); //通过Child对象调用变量ch- System.out.println(c.ch); //通过Child对象调用变量pa- System.out.println(c.pa); } }
输出结果
D:\Programs>javac Test.java D:\Programs>java Test Hello , We are in parent class variable Hello , We are in child class variable Hello , We are in parent class variable
//声明父类 class Parent { /* void类型的最终父方法的创建这个方法,实现是固定的所有的派生类或不覆盖*/ final void parent() { System.out.println("Hello , we are in parent method"); } } //通过扩展父类来声明子类 class Child extends Parent { /* void类型的最终方法的创建,这个方法的实现并不是一成不变的,所有的派生类或不覆盖*/ void child() { System.out.println("Hello , we are in child method"); } } class Test { public static void main(String[] args) { //创建父类对象 Parent p = new Parent(); //parent()通过父对象调用方法 p.parent(); //创建Child类对象 Child c = new Child(); //child()通过Child类对象调用方法 c.child(); //parent()通过子对象调用方法 c.parent(); } }
输出结果
D:\Programs>javac Test.java D:\Programs>java Test Hello , we are in parent method Hello , we are in child method Hello , we are in parent method