黑马程序员技术交流社区
标题:
求大神解释
[打印本页]
作者:
1384588560
时间:
2015-9-25 00:35
标题:
求大神解释
下列说法正确的有()
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.一个class只能定义一个constructor
作者:
Clouddd
时间:
2015-9-25 08:13
本帖最后由 Clouddd 于 2015-9-25 08:22 编辑
我的答案是选择C。constructor是构造方法吧,小知识点:构造方法是没有返回类型的。
A.错误。因为每个类中都是默认有一个空方法体的构造方法,可以不显示声明。-------------------------------
B.错误。constructor必须与class同名这句话是对的,后半句是错误的,因为方法可以与class同名,只要有声明了该方法的类型就可以
B的例子:public class Hello{
public Hello(){};//构造方法
public void Hello(){};//友好方法 public String Hello(){//友好方法
return null;
}
}
--------------------------------
C.正确。因为在一个对象被声明,然后new的时候被分配内存,这个时候JVM就会去调用该类中的构造方法。
--------------------------------
D。错误。可以有多个构造方法,只要构造方法中的形式参数不一致就可以(注意这不是方法的重载)
D例子:public class Hello{
public Hello(){}
public Hello(String str){} public Hello(int i){}
//以上3个都是构造方法
}
--------------------------------
最后一个小知识点:如果你自己声明了显示的带有形式参数构造方法(public Hello(String str){}),要注意添加一个默认方法体为空的构造方法(public Hello(){}),因为你声明了显示的带有形式参数构造方法,该类就不会默认地帮你声明空方法体的构造方法。
希望对你有用。
作者:
不隆卡
时间:
2015-9-25 09:44
A意思不太清楚,默认的构造体不知道算不算constructor,这个构造是可以被反射提取的
作者:
安仔
时间:
2015-9-25 11:26
A是错误的,类中都有一个隐式的空参数构造函数可以不显式声明,但是它这说法有点引起歧义;B是错误的,但是方法名和类名一样可以运行,但是有警告;C是正确的;D是错误的
作者:
heshiwei
时间:
2015-9-25 11:38
C吧,我选择C
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2