Breaking

Post Top Ad

Your Ad Spot

jueves, 19 de diciembre de 2019

Anulación de métodos Java

En este tutorial, aprenderemos sobre la anulación de métodos en Java con la ayuda de ejemplos.
En el último tutorial, aprendimos sobre la herencia. La herencia es una propiedad OOP que nos permite derivar una nueva clase (subclase) de una clase existente (superclase). La subclase hereda los atributos y métodos de la superclase.
Ahora, si se define el mismo método tanto en la clase de superclase como en la clase de subclase, entonces el método de la clase de subclase anula el método de la superclase. Esto se conoce como anulación de método.

Ejemplo 1: anulación del método

  1. class Animal {
  2. public void displayInfo() {
  3. System.out.println("I am an animal.");
  4. }
  5. }
  6. class Dog extends Animal {
  7. @override
  8. public void displayInfo() {
  9. System.out.println("I am a dog.");
  10. }
  11. }
  12. class Main {
  13. public static void main(String[] args) {
  14. Dog d1 = new Dog();
  15. d1.displayInfo();
  16. }
  17. }
Cuando ejecutamos el programa, la salida será:
Soy un perro.
En el programa anterior, el displayInfo()método está presente tanto en la superclase Animal como en la subclase Perro .
Cuando llamamos displayInfo()usando el objeto d1 (objeto de la subclase), se llama al método dentro de la subclase Dog . El displayInfo()método de la subclase anula el mismo método de la superclase.
Trabajo de anulación de métodos en Java.
Observe el uso de la @overrideanotación en nuestro ejemplo. En Java, las anotaciones son los metadatos que utilizamos para proporcionar información al compilador. Aquí, la @overrideanotación especifica el compilador que el método después de esta anulación anula el método de la superclase.
No es obligatorio de usar @overrideSin embargo, cuando usamos esto, el método debe seguir todas las reglas de anulación. De lo contrario, el compilador generará un error.

Reglas de anulación de Java

  • Tanto la superclase como la subclase deben tener el mismo nombre de método, el mismo tipo de retorno y la misma lista de parámetros.
  • No podemos anular el método declarado como finalstatic.
  • Siempre debemos anular los métodos abstractos de la superclase (se discutirá en tutoriales posteriores).

súper palabra clave en la anulación de Java

Una pregunta común que surge mientras se realiza la anulación en Java es:
¿Podemos acceder al método de la superclase después de anular?
Bueno, la respuesta es  . Para acceder al método de la superclase desde la subclase, utilizamos la superpalabra clave.

Ejemplo 2: uso de super palabra clave

  1. class Animal {
  2. public void displayInfo() {
  3. System.out.println("I am an animal.");
  4. }
  5. }
  6. class Dog extends Animal {
  7. public void displayInfo() {
  8. super.displayInfo();
  9. System.out.println("I am a dog.");
  10. }
  11. }
  12. class Main {
  13. public static void main(String[] args) {
  14. Dog d1 = new Dog();
  15. d1.displayInfo();
  16. }
  17. }
Cuando ejecutamos el programa, la salida será:
Soy un animal
Soy un perro.
En el ejemplo anterior, la subclase Dog anula el método displayInfo()de la superclase Animal .
Cuando llamamos al método displayInfo()usando el objeto d1 de la subclase Dog , se llama al método dentro de la subclase Dog ; El método dentro de la superclase no se llama.
Dentro displayInfo()de la subclase de perro , solíamos super.displayInfo()llamar displayInfo()a la superclase.

Es importante tener en cuenta que los constructores en Java no se heredan. Por lo tanto, no existe la anulación del constructor en Java.
Sin embargo, podemos llamar al constructor de la superclase desde sus subclases. Para eso, usamos super()Para obtener más información, visite Java super keyword .

Especificadores de acceso en la anulación de métodos

El mismo método declarado en la superclase y sus subclases puede tener diferentes especificadores de acceso. Sin embargo, hay una restricción.
Solo podemos usar esos especificadores de acceso en subclases que proporcionan un acceso mayor que el especificador de acceso de la superclase. Por ejemplo,
Supongamos que myClass()se declara un método en la superclase protectedEntonces, el mismo método myClass()en la subclase puede ser publicprotected, pero no private.

Ejemplo 3: Especificador de acceso en anulación

  1. class Animal {
  2. protected void displayInfo() {
  3. System.out.println("I am an animal.");
  4. }
  5. }
  6. class Dog extends Animal {
  7. public void displayInfo() {
  8. System.out.println("I am a dog.");
  9. }
  10. }
  11. class Main {
  12. public static void main(String[] args) {
  13. Dog d1 = new Dog();
  14. d1.displayInfo();
  15. }
  16. }
Cuando ejecutamos el programa, la salida será:
Soy un perro.
En el ejemplo anterior, la subclase Dog anula el método displayInfo()de la superclase Animal .
Siempre que llamamos displayInfo()usando el d1 (objeto de la subclase), se llama al método dentro de la subclase.
Tenga en cuenta que, el displayInfo()se declara protecteden la superclase Animal . El mismo método tiene el publicespecificador de acceso en la subclase Dog . Esto es posible porque publicproporciona un mayor acceso que el protected.

Métodos abstractos de anulación

En Java, las clases abstractas se crean para ser la superclase de otras clases. Y, si una clase contiene un método abstracto, es obligatorio anularlo.
Aprenderemos más sobre clases abstractas y sobreescritura de métodos abstractos en tutoriales posteriores.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas