JY-DX-JY 发表于 2015-10-11 15:16

JAVA书上一段话的问题

我在一本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 发表于 2015-10-12 10:39

谢谢楼上。我被“所以”误导了
页: [1]
查看完整版本: JAVA书上一段话的问题