【发布时间】:2012-05-19 23:37:13
【问题描述】:
所以我在学习java中的Abstract类,在阅读别人的代码时看到如下:
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”。我以为所有抽象类都不能实例化?那么声明“Message msg”是什么意思呢?有人可以解释这对我意味着什么吗?提前致谢
【问题讨论】:
-
您要查找的词是“多态性”。诚然,在这种情况下,
Message没有具体的实现,因为它是抽象的。但是任何继承自Message的具体类都可以被视为Message。所以notifyMessage方法可以接受任何类型的实现该抽象类的消息。它不关心具体的实现,它只想与抽象类中公开的功能进行交互,这对所有实现都是通用的。