我发现了一个惊天动地的秘密,原来是如此…………

javainthinking 2004-12-03 12:49:08
在昨天关于JMenu讨论中,我从中发现了一个惊天动地的秘密。是关于构造函数的,
我出2个简单程序对比一下,你们就知道了。
第一个程序:
import java.awt.*;
import javax.swing.*;
public class MenuTest extends JFrame
{
public void Test()//一般函数**********************************
{
JMenuBar jmenubar=new JMenuBar();
setJMenuBar(jmenubar);

JMenu jmenu1=new JMenu("File");
JMenuItem jmenuItem1=new JMenuItem("New..");
jmenu1.add(jmenuItem1);
jmenubar.add(jmenu1);

setSize(700,500);
setTitle("Swing菜单测试");
show();
}
public static void main(String[] para)
{
MenuTest MT=new MenuTest();
MT.Test();//调用Test函数**********************
}
}
第二个程序import java.awt.*;
import javax.swing.*;
public class MenuTest extends JFrame
{
MenuTest()//构造函数****************************************
{
JMenuBar jmenubar=new JMenuBar();
setJMenuBar(jmenubar);

JMenu jmenu1=new JMenu("File");
JMenuItem jmenuItem1=new JMenuItem("New..");
jmenu1.add(jmenuItem1);
jmenubar.add(jmenu1);

setSize(700,500);
setTitle("Swing菜单测试");
show();
}
public static void main(String[] para)
{
new MenuTest();//不需要调用构造函数*****************************
}
}

注意我*号注释的地方,你马上就会发觉,在构造函数MenuTest中设计JMenuBar菜单的话,根本就不必调用构造函数,换句话说,构造函数出了确保所有的对象进行初始化外,而且还自动调用,所以不用在main函数中调用,你们说是吗????????
...全文
1352 65 打赏 收藏 转发到动态 举报
写回复
用AI写文章
65 条回复
切换为时间正序
请发表友善的回复…
发表回复
babyboy321 2004-12-05
  • 打赏
  • 举报
回复
http://www.uuzone.com/app/register.do?from=invite&inviter=javawen&pin=703083
vsking 2004-12-04
  • 打赏
  • 举报
回复
我也发现一个秘密,做爱后往往有个副产品.
tommyhero 2004-12-04
  • 打赏
  • 举报
回复
new MenuTest()就自动调用构造函数了.^-^
名字和类一样的就是构造函数了,new这个类的时候会自动实现构造函数。
支持楼主!继续努力!!一起努力!
nicememory 2004-12-04
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。
AtomicMM 2004-12-04
  • 打赏
  • 举报
回复
晕晕,我在学C++时老师都教直接用 类名+对象引用生成对象,从来不new的

学了java才感觉语义严格,那就是默认的调用默认的构造函数嘛
世宝宝 2004-12-04
  • 打赏
  • 举报
回复
至少楼知道了在New一个对像的时候调用了构造函数
空心兜兜 2004-12-04
  • 打赏
  • 举报
回复
呵呵!比我强!
加油哦!再接再厉!
IEQQ 2004-12-04
  • 打赏
  • 举报
回复


楼主继续努力, 发现了总比没有发现好.


^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^^
^
kittypizza 2004-12-04
  • 打赏
  • 举报
回复
楼主,敬佩你的钻研精神 啊。人没有钻研就不会有前进的动力 啊
kittypizza 2004-12-04
  • 打赏
  • 举报
回复
To :我就喜欢 我也可以啊,哈哈

复制粘贴一下就行了
batfree 2004-12-04
  • 打赏
  • 举报
回复
11111111111111111111111
abaowu 2004-12-04
  • 打赏
  • 举报
回复
......................
MAX-长老 2004-12-04
  • 打赏
  • 举报
回复
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕晕
呵呵,我竟然发现我可以写这多的“晕”。
volkia 2004-12-04
  • 打赏
  • 举报
回复
哪有张孝祥免费下载,我以前用BT下,累死了机子不说,连硬盘也死了,555555


不要BT,我要FTP或HTTP,求助!
wandou999 2004-12-03
  • 打赏
  • 举报
回复
^_^@_@
moreyzhou 2004-12-03
  • 打赏
  • 举报
回复
hehe 楼主努力理解啊
莫大孤烟 2004-12-03
  • 打赏
  • 举报
回复
真是晕啊,new MenuTest();就是用构造器构造一个实例,这里只是没有赋给另外一个定义的对象直接使用而已而已!
Bible_Chou 2004-12-03
  • 打赏
  • 举报
回复
lh_lihong 2004-12-03
  • 打赏
  • 举报
回复

MenuTest MT; //定义了一个MT对象,同int i定义一个int整型变量一样

这个不能叫做定义了对象,如果 在此时 调用任何方法 MT.method(),都会出错。
只是定义了一个引用,也就是地址,其内容是空的,不允许使用。

MT=new MenuTest(); //初始化或者叫实例化:通过自动调用构造函数来实例化,同i=0;一样
new 操作有两个连续动作,分配空间并返回地址,在这个空间上调用构造函数。
所说的自动调用,只是人云亦云,其实自己可能也不明白到底何为自动,计算机指令可以自己产生么?说到底还是编译器产生的指令。
new MenuTest(); //初始化或者叫实例化:通过自动调用构造函数来实例化,只是没有对象名
返回的地址没有被接收而已。
全粘架构师 2004-12-03
  • 打赏
  • 举报
回复
就像复制数据库的笑话:select * from oldtable where 1<>1
加载更多回复(45)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧