一个关于类和对象的问题(JAVA)。

[code="java"]
import javax.swing.*;
import java.awt.*;

public class DrawMessage extends JPanel {
public static void main(String[] args) {
JFrame frame = new JFrame("DrawMessage");
frame.getContentPane().add(new DrawMessage());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawString("Welcome to Java", 40, 40);
}

}
[/code]

frame.getContentPane().add(new DrawMessage());
这句我不能理解,这里的new DrawMessage(),怎么可以在类中创建自身的对象呢?!

[quote]这个,学习方法的时候,不是直接用out();就OK了么?
还是没能理解能说详细点么。[/quote]

你说的那个out必须是静态方法,才可以直接使用out。这样
[code="java"]public static void out(){
//输出。
}[/code]

paintComponent()在new DrawMessage()的时候不执行,只在调用它的时候执行。比如
[code="java"]DrawMessage msg=new DrawMessage();
msg.paintComponent();[/code]

这什么奇怪的啊。可以在类中创建自身的对象,我们在学习java的时候,特别是测试第一个方法的时候不是这样写吗?
[code="java"]public class Me {

/**
 * @param args
 */
public static void main(String[] args) {
    Me me=new Me();
    me.out();
}
public void  out(){
    System.out.println("Hello World...");
}

}[/code]

这不就是在Me这个类中创建一个Me的引用吗。。呵呵