Так что я изучал абстрактный класс в Java, и когда я читал коды других людей, я увидел следующее:Java- Как использовать абстрактный класс
public abstract class Message implements Serializable, Comparable<Message> {
//stuff in this class
}
В другом классе в рамках того же проекта, программист заявил способ следующим образом:
public void notifyMessage(Message msg, HostType sourceType) {
//some stuff in this method
}
Уведомление в объявлении notifyMessage, переменная msg имеет тип «Сообщение». Я думал, что все абстрактные классы не могут быть созданы? Тогда что значит объявить «Message msg»? Может кто-нибудь объяснить, что это значит для меня? Заранее спасибо
Слово, которое вы ищете, «полиморфизм». Правда, в этом случае нет конкретной реализации «Сообщения», поскольку она абстрактна. Но любой конкретный класс, который наследуется от «Message», может рассматриваться как «Сообщение». Поэтому метод 'notifyMessage' может принимать любые сообщения, которые реализуют этот абстрактный класс. Он не заботится о конкретных реализациях, он только хочет взаимодействовать с функциональностью, открытой в абстрактном классе, что было бы общим для всех реализаций. – David