¿Podemos extender el método final en Java?

El método final en Java se puede extender, pero junto con el concepto principal que se debe tener en cuenta, extender significa que puede extender o no esa clase en particular que tiene el método final, pero no puede anular ese método final. Un caso más en el que no puede extender ese método final es que la clase que contiene el método final también es una clase final.

Enfoques:

Aquí discutiremos dos enfoques para satisfacer lo que acabamos de decir para descubrir cómo se extiende el método final.

  1. Sin anular
  2. Con anulación 

Implementación:

  • La clase ‘GFGParent’ tiene un método final llamado aleatoriamente ‘dataDisplay()’ que se crea aquí como el método final.
  • La clase ‘GFG’ extiende GFGParent pero el programa se ejecuta sin ningún error, por lo tanto, podemos extender un método final pero no podemos anularlo.
  • Aquí, si hubiera hecho que la clase GFGParent fuera final, tampoco extenderá el método final ya que no podemos heredar las clases finales.

Ejemplo 1

Java

// Java Program to Illustrate 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 of 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");
    }
}
Producción

GFG!
Data Structure

Ejemplo 2

El único cambio que haremos aquí es que simplemente estamos tratando de anular el método dentro de la clase secundaria.

Java

// Java Program to Illustrate 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();
    }
}

Salida: Genera un error en tiempo de compilación.

Publicación traducida automáticamente

Artículo escrito por rajatagrawal5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *