El constructor siempre se llama por su nombre de clase en una clase misma. Un constructor se usa para inicializar un objeto, no para construir el objeto. Como todos sabemos, las clases abstractas también tienen un constructor. Entonces, si no definimos ningún constructor dentro de la clase abstracta, JVM (Java Virtual Machine) dará un constructor predeterminado a la clase abstracta. Si queremos saber cómo definir constructores definidos por el usuario como constructores con argumento o cualquier tipo de constructor dentro de la clase abstracta, debe seguir el procedimiento dado.
Nota: una clase abstracta es una clase declarada con una palabra clave abstracta .
Propiedades de una clase abstracta:
- Un resumen puede tener un método abstracto y uno no abstracto.
- Debe declararse con una palabra clave abstracta.
- Puede tener un constructor, método estático.
- Puede tener un método final que evita que la clase secundaria de la clase abstracta no cambie el cuerpo del método.
- El método abstracto no contiene ningún cuerpo o, en palabras simples, puede decir que no puede definir un método abstracto dentro de una clase abstracta. Podemos definir un método abstracto dentro de la clase derivada de su clase abstracta.
- No se puede crear una instancia del objeto de la clase abstracta, lo que significa que no puede crear un objeto de clase abstracta directamente, pero puede crear su objeto por referencia a su clase secundaria.
Procedimiento:
- Si define su propio constructor con argumentos dentro de una clase abstracta pero olvida llamar a su propio constructor dentro de su constructor de clase derivada, JVM llamará al constructor de forma predeterminada.
- Entonces, si define su constructor de argumento único o múltiple dentro de la clase abstracta, asegúrese de llamar al constructor dentro del constructor de la clase derivada con la palabra clave super .
Implementación: Aquí, en este programa, vamos a multiplicar dos números utilizando el siguiente enfoque mencionado anteriormente.
Paso 1: creamos una clase abstracta llamada ‘Contenido’ y definimos un usuario que define un constructor con un argumento, una variable con el nombre ‘a’ y un método abstracto llamado ‘multiplicar’
Paso 2: creamos una clase que debe derivarse de esta clase abstracta ‘Contenido’ llamada ‘GFG’. Dentro de la clase GFG vamos a definir un constructor y dentro del método llamar al constructor de la clase principal usando la palabra clave super y definir el método abstracto de su clase principal en él.
Paso 3: ahora en la clase principal de nuestra función que es ‘GeeksforGeeks’ aquí, donde crearemos un objeto de clase abstracta ‘Contenido’ por referencia a su objeto de clase derivado. Entonces llamamos al método de la clase abstracta por su objeto.
Paso 4: Dentro del método, multiplicamos tanto el valor almacenado en los diferentes nombres de variables donde una de las variables es la variable de una clase abstracta. Podemos acceder a la variable de la clase abstracta por su objeto de clase derivado.
Ejemplo:
Java
// Java Program to Illustrate Concept of Constructors // in Abstract Class // Class 1 // Helper Abstract class // Parent class abstract class Content { int a; // Constructor of abstract class public Content(int a) { // This keyword refers to current instance itself this.a = a; } // Abstract method of abstract class abstract int multiply(int val); } // Class 2 // Helper class extending above Class1 // Child class of Abstract class class GFG extends Content { // Constructor of Child class GFG GFG() { // Super keyword refers to parent class super(2); } // Defining method the abstract method public int multiply(int val) { // Returning value of same instance return this.a * val; } } // Class 3 // Main class public class GeeksforGeeks { // Main driver method public static void main(String args[]) { // Creating reference object of abstract class // using it child class Content c = new GFG(); // Calling abstract method of abstract class System.out.println(c.multiply(3)); } }
6
Publicación traducida automáticamente
Artículo escrito por debadebaduttapanda7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA