黑马程序员技术交流社区

标题: JAVA -构造方法问题? [打印本页]

作者: mengqishiye    时间: 2016-4-7 22:44
标题: JAVA -构造方法问题?
关于构造方法重载注意事项说法错误的是( ) ----- 单选
A、如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
B、如果我们没有给出构造方法,系统也不会提供无参构造方法。
C、如果我们给出了构造方法,系统将不再提供默认的无参构造方法
D、如果我们给出了有参构造方法,系统自动提供默认的无参构造方法。
这是在做自我评测的时候遇到的一道题。感觉B 和 D 都不对啊~    ??可是是单选、、、
相关知识点:
                 A:如果我们在一个类中没有给出构造方法, 系统将默认给出一个无参构造;
                B:如果我们给出了构造方法, 系统将不再提供无参构造  (所以我们以后在定义类的时候 永远手动给出无参构造)
                代码
                       
                        class Person_Test {
                                public static void main(String[] args){
                                        Person p = new Person();//报错 因为没有无参构造
                                }
                        }

                        class Person {
                                private String name;
                                private int age;
                                public Person(String name,int age) {
                                        this.name = name;
                                        this.age = age;
                                }
                        }

有点不明白~。。


4.jpg (62.64 KB, 下载次数: 21)

4.jpg

作者: wlsperfect    时间: 2016-4-8 07:40
妹子,你分析的没错,根据知识点,这题B和D确实都不对,黑马出题也不能保证都准确啊,也难为你了.

不过你下面写的那段代码不会出问题啊? Person P = new Person 不会因为没有无参构造而报错,你在验证下看看.

还有你也回复回复我啊!
作者: syasuker    时间: 2016-4-8 12:34
本帖最后由 syasuker 于 2016-4-8 12:39 编辑

  1. /*
  2. 构造函数的特点:
  3. 1函数名与类名相同
  4. 2不用定义返回值类型
  5. 3不可以写return语句
  6. 构造作用是:给对象初始化
  7. */
  8. public class Person {
  9.     private String name;
  10.     private int age;
  11.     public Person(String name,int age)
  12.     {
  13.             this.name = name;
  14.             this.age = age;
  15.     }
  16. //        Person(){}//默认无参构造函数,
  17. //                如果定义了一个有参构造函数,这个默认的就没有了,
  18. //                但是通常建议手动写一个无参构造函数
  19. }
  20. class Person_Test {
  21.     public static void main(String[] args){
  22.             Person p = new Person();//调用Person(){}报错因为没有无参构造函数,即:Person(){}
  23. //          Person p = new Person(null,0);//调用有参构造函数public Person(String name,int age){}   
  24.     }
  25. }
复制代码


确实是B D都不对,可能是打算让你选B吧
学的不懒啊xD{:3_64:}

作者: 可可TKD    时间: 2016-4-8 22:20
根据老师所讲内容来看,B和D都是错的,
作者: mengqishiye    时间: 2016-4-10 10:47
wlsperfect 发表于 2016-4-8 07:40
妹子,你分析的没错,根据知识点,这题B和D确实都不对,黑马出题也不能保证都准确啊,也难为你了.

不过你下面写 ...

感谢感谢~
作者: mengqishiye    时间: 2016-4-10 10:50
wlsperfect 发表于 2016-4-8 07:40
妹子,你分析的没错,根据知识点,这题B和D确实都不对,黑马出题也不能保证都准确啊,也难为你了.

不过你下面写 ...

报错了---> The constructor Person() is undefined
作者: mengqishiye    时间: 2016-4-10 10:53
syasuker 发表于 2016-4-8 12:34
确实是B D都不对,可能是打算让你选B吧
学的不懒啊xD

谢谢 谢谢
作者: Bloodsoul    时间: 2016-4-10 11:06
BD吧.应该是校方出题老师把自己都弄晕了
作者: wlsperfect    时间: 2016-4-10 21:48
mengqishiye 发表于 2016-4-10 10:50
报错了---> The constructor Person() is undefined

妹子 你终于又上线了,等你好久了!  确实会报这个错The constructor Person() is undefined

因为 Person p = new Person(); 创建的是Person的空参构造,而Person类中没有空参构造,所以会报错!

我发你的私聊你都看到了吗?
作者: 哦哈哟    时间: 2016-4-10 21:53
自我测评的题不是单项多项混合的吗?
作者: 马儿不吃草    时间: 2016-4-10 22:14
这题我也遇到过,真坑
作者: mengqishiye    时间: 2016-4-10 22:14
哦哈哟 发表于 2016-4-10 21:53
自我测评的题不是单项多项混合的吗?

可是这个明明写着 --> 单选 啊
作者: whb521    时间: 2016-4-10 22:59
本帖最后由 whb521 于 2016-4-10 23:25 编辑
wlsperfect 发表于 2016-4-10 21:48
妹子 你终于又上线了,等你好久了!  确实会报这个错The constructor Person() is undefined

因为 Person  ...

{:2_32:}

作者: 哦哈哟    时间: 2016-4-10 23:03
mengqishiye 发表于 2016-4-10 22:14
可是这个明明写着 --> 单选 啊

被题目坑了
作者: mengqishiye    时间: 2016-4-10 23:30
whb521 发表于 2016-4-10 22:59






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2