«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу получить доступ к методам подкласса из переменной Superclass в Java?

Как я могу получить доступ к методам подкласса из переменной Superclass в Java?

Опубликовано в 2025-03-24
Просматривать:512

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

доступа к методам подкласса из SuperClass

в объектно-ориентированном программировании, наследство позволяет классам наследовать свойства и поведение от своих родительских классов. Однако при доступе к методам подклассов из переменной Superclass возникают некоторые ограничения.

рассмотрим следующий код фрагмент:

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
    }
}

в классе питомника, когда объект CAT назначается переменной PET, доступны только участники, определенные в PET. Это включает в себя такие методы, как getName () и getage (), но не getColor ().

, чтобы разрешить это, есть два варианта:

1. Объявить переменную как подкласс:

объявить переменную как конкретный подкласс:

Cat cat = new Cat("Feline", 12, "Orange");
cat.getColor(); // Valid, getColor() is defined in Cat

2. Избрать переменную в подкласс: ]

Отправить переменную в известный или ожидаемый подкласс:

Pet cat = new Cat("Feline", 12, "Orange");
((Cat)cat).getColor(); // Valid, getColor() is accessible via casting

пример реализации: ]

здесь - исправленная версия класса пиеннела:

public class Kennel {
    public static void main(String[] args) {
        Cat cat = new Cat("Feline", 12, "Orange");
        System.out.println("Cat's color: "   cat.getColor());
    }
}
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3