Java-如何使用抽象类

tur*_*oup 2 java class abstract

所以我在java中学习Abstract类,当我读其他人的代码时,我看到了以下内容:

public abstract class Message implements Serializable, Comparable<Message> {
    //stuff in this class
}
Run Code Online (Sandbox Code Playgroud)

在同一项目下的另一个类中,程序员声明了一个方法如下:

public void notifyMessage(Message msg, HostType sourceType) {
    //some stuff in this method
}
Run Code Online (Sandbox Code Playgroud)

请注意,在notifyMessage声明中,变量msg的类型为"Message".我以为所有的抽象类都无法实例化?那么声明"Message msg"是什么意思?有人能解释这对我意味着什么吗?提前致谢

por*_*ida 6

嗯,这意味着你可以收到任何类型的消息(儿童),如果你有的话,让我们用其他方式

public class Letter extends Message ...
Run Code Online (Sandbox Code Playgroud)

您可以发送Letter对象作为notifyMessage的参数

这样的事情是可能的:

someObject.notifyMessage(  new Letter() , ... )
Run Code Online (Sandbox Code Playgroud)

java.awt.Component是抽象的JPanel继承了Container(实际上是JComponent第一个)Container有add(Component c)

这意味着您可以添加任何组件,如JButton,JLabel等.

http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Container.html#add(java.awt.Component) http://docs.oracle.com/javase/1.4. 2 /文档/ API/JAVA/AWT/Component.html

如果定义该对象的抽象方法和主体,也可以创建抽象类的对象.

    Message m = new Message() {
        //if no abstract method, then this is empty
    };
Run Code Online (Sandbox Code Playgroud)