"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo acceder a los métodos de subclase desde una variable de superclase en Java?

¿Cómo puedo acceder a los métodos de subclase desde una variable de superclase en Java?

Publicado el 2025-03-24
Navegar:902

How Can I Access Subclass Methods from a Superclass Variable in Java?

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());
    }
}
Último tutorial Más>

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