发新帖本帖赏金 0.10元(功能说明)我要提问
返回列表
打印
[嵌入式linux]

JAVA书上一段话的问题

[复制链接]
846|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JY-DX-JY|  楼主 | 2015-10-11 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在一本Java书中看到这样一段话:
如果在类中定义的构造方法都不是无参的构造方法,那么编译器也不会为类设置一个默认的无参构造方法,当试图调用
无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动
创建一个不带参数的构造方法。
我看不懂。
我觉得应该这样:如果在类中定义的构造方法都不是无参的构造方法,那么编译器也会为类设置一个默认的无参构造方
法,这样当试图调用无参构造方法实例化一个对象时,编译器才不会报错。
我也不知道对不对,请大神指教。谢谢!

相关帖子

沙发
ganyy| | 2015-10-12 09:33 | 只看该作者
本帖最后由 ganyy 于 2015-10-12 09:35 编辑


显然你的想法是有问题的,不让编译器报错不是我们的目的,让程序达到设计的目的才是我们的目的。如果你作为类的设计者,有时候能够方便的提供不需要参数的默认构造函数当然可以,但有时候没有参数的构造函数好像没有一段程序没有输入一样,有时候就没法往下运行了,这时候你应该感谢编译器没有自作聪明的加上误导你的无参构造函数你才对。

楼主最近在学Android应该知道,Android的Activity中经常会出现类似 new MyAdapter(this); 这样的带this参数的构造函数,如果系统自作聪明加入一个无需参数的Adapter构造函数,new MyAdapter(); 那么虽然编译通过了,但是没有this这个Context参数最后程序还是会在运行中崩溃。
不过愿意去思考这些总是好事,总比一味的早知道接受书本的知识好。


使用特权

评论回复

打赏榜单

JY-DX-JY 打赏了 0.10 元 2015-10-12

板凳
JY-DX-JY|  楼主 | 2015-10-12 10:39 | 只看该作者
谢谢楼上。我被“所以”误导了

使用特权

评论回复
发新帖 本帖赏金 0.10元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3351

帖子

30

粉丝