доступа к методам подкласса из 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