在Java中将final关键字与继承一起使用

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