所以我在学习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”。我认为所有的抽象类都不能被实例化?那么声明“Message msg”是什么意思?有人能解释这对我意味着什么吗?在此先感谢
你要找的字是“多态性”。没错,在这种情况下没有具体的'Message'实现,因为它是抽象的。但是任何从'Message'继承的具体类都可以看作是'Message'。所以'notifyMessage'方法可以接受任何类型的实现该抽象类的消息。它并不关心具体的实现,它只想与抽象类中公开的功能进行交互,这对于所有实现都是通用的。 – David