A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周志伟 黑马帝   /  2013-4-23 01:52  /  1404 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周志伟 于 2013-4-24 04:33 编辑
  1. class  Demo
  2. {
  3.         Demo(){}  //在这里,只要我写了这个Demo构造函数,系统默认的构造函数就没有了。
  4.                           //系统默认的构造函数与这里写的构造函数的区别在哪里????
  5.         public static void main(String[] args)
  6.         {
  7.                 System.out.println("Hello World!");
  8.         }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
这两个本质上是一样的,当没有提供构造方法时,编译器会自动加上一个默认的不带参数的构造方法。你自己写上的话编译器就不加了,省略编译器就加上。每个类都必须至少有一个构造方法,不写时便是上述原因编译器自动给你加的,不是它没有构造方法。

另外你还可以再在命令行下用javap 类名  查看一个类中默认的构造方法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 周志伟 于 2013-4-23 03:50 编辑
续圆凯 发表于 2013-4-23 02:26
这两个本质上是一样的,当没有提供构造方法时,编译器会自动加上一个默认的不带参数的构造方法。你自己写上 ...


我自己加上的构造方法是这样的:Demo(){}
而用你说的方法:javap 类名   查看到的构造方法如图所示:感觉吧,两者还是有区别啊???用javap查看到的没有“{}”能再解释一下吗?
回复 使用道具 举报
默认构造函数和自己写上的没区别,没写构造函数jvm会自动添加为demo(){},你用javap 查看默认构造函数没有{} 应该是虚拟机在编译时候会自动加上方法体也就是{}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
javap最常用的用途是用来快速的查看一个类可用的方法

javap的标准输出是公有变量和类的成员函数。

它能获取成员函数并不是让你查看函数的具体封装。
就像你获取到的主函数 也同样没有大括号一样。。。。
你可以用javap -c 类名  获取到更多信息。
回复 使用道具 举报
这样写是没什么区别的
你写了,调用都就可以直接调。
不写,系统会帮你默默为你加一个无参构造函数。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
周志伟 黑马帝 2013-4-23 23:50:29
7#
尹丽峰 发表于 2013-4-23 09:58
默认构造函数和自己写上的没区别,没写构造函数jvm会自动添加为demo(){},你用javap 查看默认构造函数没 ...

谢谢啦,我再看看,消化一下。
回复 使用道具 举报
周志伟 黑马帝 2013-4-23 23:50:57
8#
续圆凯 发表于 2013-4-23 11:34
javap最常用的用途是用来快速的查看一个类可用的方法

javap的标准输出是公有变量和类的成员函数。

恩恩,谢谢啦。
回复 使用道具 举报
周志伟 黑马帝 2013-4-23 23:51:28
9#
吴波 发表于 2013-4-23 17:14
这样写是没什么区别的
你写了,调用都就可以直接调。
不写,系统会帮你默默为你加一个无参构造函数。 ...

谢谢啦,我还得再回去看看视频。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马