关于Java构造方法的一个问题

以下选项中正确的是()A、一个class只能定义一个constructorB、constructor必须与class同名,但普通方法不能与class同名C、class中c... 以下选项中正确的是()
A、 一个class只能定义一个constructor
B、 constructor 必须与class同名,但普通方法不能与class同名
C、 class中constructor不可省略
D、 construtcor只会在一个对象被new时执行
我觉得B和D都正确,但标准答案是B,请问各位高手怎么看!
展开
 我来答
驻云客
推荐于2017-09-09 · TA获得超过977个赞
知道小有建树答主
回答量:577
采纳率:0%
帮助的人:335万
展开全部
D不正确是因为构造函数不只是在对象NEW的时候被执行,你也可以在其它重载构造函数内执行,所以D不正确。
例如:
public class test {
public test() {
//这是一个空参构造方法
}
public test(String str) {
//这是一个有参构造方法,在这个方法内调用了上面的空参构造方法。
this();
}
}

但是最让我疑惑的不是这个,而是B,
为什么B是对的呢?很明显这个是错误的答案,不知道是谁给你出的题,但你可以告诉他,这题他出错了。。。
下面程序已经编译通过,里面的public void test()方法就是个普通方法,但可以和类重名不是:

public class test {
public test() {
//这是一个空参构造方法
System.out.println("空参构造方法");
}
public test(String str) {
//这是一个有参构造方法,在这个方法内调用了上面的空参构造方法。
this();
System.out.println("执行this()后,调用了有参构造方法。输出参数:"+str);
}

public void test(){
System.out.println("普通方法");
}
public static void main(String[] args) {
test t=new test();
t.test();
test t1=new test("我");
}
}

程序输出结果:

空参构造方法
普通方法
空参构造方法
执行this()后,调用了有参构造方法。输出参数:我
追问
一、谢谢你的解答,这个方法:
public void test(){
System.out.println("普通方法");
}
证明了B答案是错的;那么再来看D答案,你new一个对象的时候:
如果你说有参构造里面能执行无参构造;那么有参构造也只有在new对象时才会执行吧,所以你说:“构造函数不只是在对象NEW的时候被执行,你也可以在其它重载构造函数内执行”,这样的说法很牵强其实!所以D正确!
转倾檬F
2018-08-03 · TA获得超过124个赞
知道小有建树答主
回答量:99
采纳率:66%
帮助的人:41万
展开全部
构造函数是一个类中的特殊的函数,构造函数用于在生成对象时的初始化。普通的方法在类中按照顺序去执行,而构造函数在使用new运算符创建对象时才会自动调用。
在继承的相关概念中,子类继承父类。在生成子类对象的同时,会形成如下初始化的优先级。
1.生成子类,首先调用父类
2.在类中,首先初始化属性,后初始化构造方法(属性在类中,在方法中叫变量)
父类属性-->父类构造方法-->子类属性-->子类构造方法
在子类的构造方法中,会默认的调用父类构造方法,有隐形的super()方法;因此,如果父类中如果没有无参构造方法,就会报错
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappPD4Cv2tsMgi1g
2013-03-28 · TA获得超过211个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:96.3万
展开全部
我觉得D是正确的, 不管是怎么用,只要NEW一个类, 管你写没写构造方法,都有默认的空构造方法.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rookie_R
2013-03-27 · TA获得超过125个赞
知道答主
回答量:91
采纳率:100%
帮助的人:42.3万
展开全部
我觉得也是,创建一个对象的时候,默认就会创建一个空的 construtcor 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lhfssg
2013-03-28
知道答主
回答量:20
采纳率:0%
帮助的人:2.9万
展开全部
B 一个Class 中可以有多个构造函数 (不同的参数) 构造函数名必须和类名相同
一个类也可以没有构造函数
追问
那么D答案,在对象new的时候,他的构造方法都会执行是吧;
如果有显示的构造方法,执行;没有显示的构造方法,背后其实也会执行,是吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式