Accediendo a los métodos de subclase desde superclass
en programación orientada a objetos, la herencia permite que las clases hereden las propiedades y comportamientos de sus clases de padres. Sin embargo, al acceder a los métodos de subclases desde una variable de superclase, ocurren algunas limitaciones.
Considere el siguiente código de código:
abstract public class Pet { ... } public class Cat extends Pet { private String color; public String getColor() { ... } } public class Kennel { public static void main(String[] args) { Pet cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Compiler error: getColor() not defined in Pet } }
En la clase de la perrera, cuando un objeto CAT se asigna a una variable PET, solo se pueden acceder a los miembros definidos en PET. Esto incluye métodos como getName () y getage (), pero no getColor ().
para resolver esto, hay dos opciones:
1. Declarar variable como subclase:
Declarar la variable como la subclase específica:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getColor(); // Valid, getColor() is defined in Cat
2. Cast Variable para subclase:
Ech la variable a una subclase conocida o esperada:
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getColor(); // Valid, getColor() is accessible via casting
Ejemplo de implementación:
Aquí está una versión corregida de la clase Kennel:
public class Kennel { public static void main(String[] args) { Cat cat = new Cat("Feline", 12, "Orange"); System.out.println("Cat's color: " cat.getColor()); } }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3