A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1384588560 中级黑马   /  2015-9-25 00:35  /  584 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下列说法正确的有()
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.一个class只能定义一个constructor

4 个回复

倒序浏览
本帖最后由 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(){}),因为你声明了显示的带有形式参数构造方法,该类就不会默认地帮你声明空方法体的构造方法。
希望对你有用。

回复 使用道具 举报 1 0
A意思不太清楚,默认的构造体不知道算不算constructor,这个构造是可以被反射提取的
回复 使用道具 举报
A是错误的,类中都有一个隐式的空参数构造函数可以不显式声明,但是它这说法有点引起歧义;B是错误的,但是方法名和类名一样可以运行,但是有警告;C是正确的;D是错误的
回复 使用道具 举报
C吧,我选择C
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马