Método y clase abstracta de Java (con ejemplo)

En este tutorial, aprenderemos sobre las clases y métodos abstractos de Java con la ayuda de ejemplos. También aprenderemos sobre la abstracción en Java.

Clase abstracta de Java

No se puede crear una instancia de la clase abstracta en Java (no podemos crear objetos de clases abstractas). Usamos la abstractpalabra clave para declarar una clase abstracta. Por ejemplo,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

Una clase abstracta puede tener tanto los métodos regulares como los métodos abstractos. Por ejemplo,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Para conocer los métodos no abstractos, visite métodos Java. Aquí aprenderemos sobre métodos abstractos.

Método abstracto de Java

Un método que no tiene cuerpo se conoce como método abstracto. Usamos la misma abstractpalabra clave para crear métodos abstractos. Por ejemplo,

 abstract void display();

Aquí, display()es un método abstracto. El cuerpo de display()es reemplazado por ;.

Si una clase contiene un método abstracto, entonces la clase debe declararse abstracta. De lo contrario, generará un error. Por ejemplo,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Ejemplo: método y clase abstracta de Java

Aunque no se pueden crear instancias de clases abstractas, podemos crear subclases a partir de ellas. Luego podemos acceder a los miembros de la clase abstracta utilizando el objeto de la subclase. Por ejemplo,

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

Salida

 Esta es la programación de Java

En el ejemplo anterior, hemos creado una clase abstracta llamada Language. La clase contiene un método regular display().

Hemos creado la clase Main que hereda la clase abstracta. Note la declaración,

 obj.display();

Aquí, obj es el objeto de la clase secundaria Main. Estamos llamando al método de la clase abstracta usando el objeto obj.

Implementación de métodos abstractos

Si la clase abstracta incluye algún método abstracto, entonces todas las clases secundarias heredadas de la superclase abstracta deben proporcionar la implementación del método abstracto. Por ejemplo,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

Salida

 Corteza corteza que puedo comer.

En el ejemplo anterior, hemos creado una clase abstracta Animal. La clase contiene un método abstracto makeSound()y un método no abstracto eat().

Hemos heredado una subclase Perro de la superclase Animal. Aquí, la subclase Dog proporciona la implementación del método abstracto makeSound().

Luego usamos el objeto d1 de la clase Dog para llamar a los métodos makeSound()y eat().

Nota : Si la clase Dog no proporciona la implementación del método abstracto makeSound(), Dog también debe declararse como abstracto. Esto se debe a que la subclase Dog hereda makeSound()de Animal.

Constructor de accesos de clases abstractas

Una clase abstracta puede tener constructores como la clase regular. Y podemos acceder al constructor de una clase abstracta desde la subclase usando la superpalabra clave. Por ejemplo,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Aquí, hemos utilizado el super()constructor interno de Dog para acceder al constructor del Animal.

Tenga en cuenta que supersiempre debe ser la primera declaración del constructor de subclase. Visite la palabra clave super Java para obtener más información.

Abstracción de Java

El uso principal de clases y métodos abstractos es lograr la abstracción en Java.

La abstracción es un concepto importante de la programación orientada a objetos que nos permite ocultar detalles innecesarios y mostrar solo la información necesaria.

Esto nos permite gestionar la complejidad al omitir u ocultar detalles con una idea más simple y de mayor nivel.

Un ejemplo práctico de abstracción pueden ser los frenos de las motos. Sabemos lo que hace el freno. Cuando aplicamos el freno, la moto se detiene. Sin embargo, el funcionamiento del freno se mantiene oculto para nosotros.

La principal ventaja de ocultar el funcionamiento del freno es que ahora el fabricante puede implementar el freno de manera diferente para diferentes motocicletas, sin embargo, el freno que haga será el mismo.

Tomemos un ejemplo que nos ayuda a comprender mejor la abstracción de Java.

Ejemplo 3: Abstracción de Java

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Salida :

 Corteza, corteza, maullidos

En el ejemplo anterior, hemos creado una superclase Animal. La superclase Animal tiene un método abstracto makeSound().

El makeSound()método no se puede implementar dentro de Animal. Es porque cada animal emite sonidos diferentes. Entonces, todas las subclases de Animal tendrían una implementación diferente de makeSound().

Por lo tanto, la implementación de makeSound()in Animal se mantiene oculta.

Aquí, Dog hace su propia implementación de makeSound()y Cat hace su propia implementación de makeSound().

Nota : También podemos usar interfaces para lograr la abstracción en Java. Para obtener más información, visite Interfaz Java.

Puntos clave para recordar

  • Usamos la abstractpalabra clave para crear clases y métodos abstractos.
  • Un método abstracto no tiene ninguna implementación (cuerpo del método).
  • Una clase que contiene métodos abstractos también debe ser abstracta.
  • No podemos crear objetos de una clase abstracta.
  • Para implementar características de una clase abstracta, heredamos subclases de ella y creamos objetos de la subclase.
  • Una subclase debe anular todos los métodos abstractos de una clase abstracta. Sin embargo, si la subclase se declara abstracta, no es obligatorio anular los métodos abstractos.
  • Podemos acceder a los atributos y métodos estáticos de una clase abstracta utilizando la referencia de la clase abstracta. Por ejemplo,
     Animal.staticMethod();

Articulos interesantes...