📜  我们可以在Java扩展 final 方法吗?

📅  最后修改于: 2022-05-13 01:54:26.043000             🧑  作者: Mango

我们可以在Java扩展 final 方法吗?

Java的final方法可以扩展,但除了要考虑的主要概念之外,扩展意味着您可以扩展或不扩展具有final方法的特定类,但您不能覆盖该final方法。不能扩展 final 方法的另一种情况是包含 final 方法的类也是 final 类。

方法:

在这里,我们将讨论两种方法,以满足我们刚才所说的,以确定如何 扩展了最终方法。

  1. 没有越权
  2. 与凌驾

执行:

  • 'GFGParent' 类有一个随机命名为 'dataDisplay()' 的最终方法,它在这里被创建为最终方法。
  • 'GFG' 类扩展了 GFGParent 但程序执行时没有任何错误,因此我们可以扩展 final 方法但不能覆盖它。
  • 在这里,如果您已将 GFGParent 类设为 final,您将不会扩展 final 方法,因为我们无法继承 final 类。

示例 1



Java
// Java Program to Illsutarte Final Method Extension
  
// Importing input output classes
import java.io.*;
  
// Class 1
// Child class
// Main class
class GFG extends GFGParent {
  
    // Main driver method
    public static void main (String[] args) {
  
        // Print statement
        System.out.println("GFG!");
  
        // Creating an object og parent class in child class
        // inside the main() method
        GFGParent gfg = new GFGParent();
  
        // Calling the method created in parent class
        gfg.dataDisplay();
    }
}
  
// Helper class
// Parent class
class GFGParent {
    public final void dataDisplay () {
        System.out.println("Data Structure");
    }
}


Java
// Java Program to Illsutarte Final Method Extension
// Where method Overrides
  
// Importing input output classes
import java.io.*;
  
// Class 1- Parent class
class GFGParent {
  
    // Method inside parent class
    public final void dataDisplay()
    {
        System.out.println("Data Structure");
    }
}
  
// Class 2
// Child class
// Main class
class GFG extends GFGParent {
  
    // Method 1
    // Created in order to illustrate overridden method/s
    public final void dataDisplay()
    {
  
        // Print statement whenever this message is called
        System.out.println("Data Structure 2");
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Print statement
        System.out.println("GFG!");
  
        // Creating an object of parent class and
        // calling method of child class over it.
        GFGParent gfg = new GFGParent();
        gfg.dataDisplay();
    }
}


输出
GFG!
Data Structure

示例 2

我们将在这里进行的唯一更改是我们只是尝试覆盖子类中的方法。

Java

// Java Program to Illsutarte Final Method Extension
// Where method Overrides
  
// Importing input output classes
import java.io.*;
  
// Class 1- Parent class
class GFGParent {
  
    // Method inside parent class
    public final void dataDisplay()
    {
        System.out.println("Data Structure");
    }
}
  
// Class 2
// Child class
// Main class
class GFG extends GFGParent {
  
    // Method 1
    // Created in order to illustrate overridden method/s
    public final void dataDisplay()
    {
  
        // Print statement whenever this message is called
        System.out.println("Data Structure 2");
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Print statement
        System.out.println("GFG!");
  
        // Creating an object of parent class and
        // calling method of child class over it.
        GFGParent gfg = new GFGParent();
        gfg.dataDisplay();
    }
}

输出:它生成一个编译时错误。