Java中具有继承性的final关键字在最后的关键字是最后这是我们无法改变。
我们可以将final关键字用于变量,方法和类。
如果我们使用final关键字的继承也就是如果我们宣布与任何方法final关键字在基类这样的实现最终的方法是一样的,如派生类。
如果任何其他类扩展了该子类,则可以在我们想要的任何子类中声明最终方法。
情况1:使用继承声明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
情况2:用继承声明final方法//声明父类
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