黑马程序员技术交流社区

标题: 求大神解释 [打印本页]

作者: 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