//例子1
import javax.swing.JFrame;public class testFrame extends JFrame
{
public testFrame()
{
super("我的测试 05-06-05,03:46");
//第一个问题A点 setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
} public static void main(String[] arguments)
{
testFrame tf=new testFrame();
}
}
//例子2
import javax.swing.JWindow;public class testWindow extends JWindow{
public testWindow()
{
super();
//第一个问题B点 setBounds(250,225,300,150);
} public static void main(String[] args)
{
testWindow sW=new testWindow();
sW.setVisible(true);
for (int i=0;i<100;i++)
System.out.print(i+" ");
sW.setVisible(false);
System.exit(0);
}
}
第一个问题:以上A、B两点中super()的意思是什么?为何B点中如果键入A中("我的测试 05-06-05,03:46")的字符串文字就会显示出错,是否与javax.swing.JFrame、javax.swing.JWindow这两个类有关?第二个问题:如何在API中查找javax.swing.JFrame或javax.swing.JWindow中super()的注释?
import javax.swing.JFrame;public class testFrame extends JFrame
{
public testFrame()
{
super("我的测试 05-06-05,03:46");
//第一个问题A点 setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
} public static void main(String[] arguments)
{
testFrame tf=new testFrame();
}
}
//例子2
import javax.swing.JWindow;public class testWindow extends JWindow{
public testWindow()
{
super();
//第一个问题B点 setBounds(250,225,300,150);
} public static void main(String[] args)
{
testWindow sW=new testWindow();
sW.setVisible(true);
for (int i=0;i<100;i++)
System.out.print(i+" ");
sW.setVisible(false);
System.exit(0);
}
}
第一个问题:以上A、B两点中super()的意思是什么?为何B点中如果键入A中("我的测试 05-06-05,03:46")的字符串文字就会显示出错,是否与javax.swing.JFrame、javax.swing.JWindow这两个类有关?第二个问题:如何在API中查找javax.swing.JFrame或javax.swing.JWindow中super()的注释?
问题一:
这里的super()指的是调用基类的构造函数,即A中的super(...)相当于调用的是JFrame的构造函数JFrame(...),而B中的super(),调用的是JWindow的构造函数JWindow()。因为JWindow没有JWindow(String )这个构造函数,所以B点中键入A中的字符串会出错。
问题二:
通过上面的解答,你应该明白,在API中肯定查不到实在的super()函数,它所对应的是这些类的构造函数。
答得非常好,通过super()方法你可以直接调用父类的构造函数,简单明了。
所以你调用父亲类的构造函数要小心,得先了解父类是否有这样的构造函数.