当前位置: 技术问答>java相关
关于构造函数的一道题
来源: 互联网 发布时间:2015-03-16
本文导语: 有这样一道题: public class q21{ int maxElements; void q21(){ maxElements=100; System.out.println(maxElements); } public static void main(String[] args){ q21 a=new q21(); } } 答案是在q21 a=new q21()处编译出错,原因是构...
有这样一道题:
public class q21{
int maxElements;
void q21(){
maxElements=100;
System.out.println(maxElements);
}
public static void main(String[] args){
q21 a=new q21();
}
}
答案是在q21 a=new q21()处编译出错,原因是构造函数无返回值,故不允许写void,但我试了试,并没有编译错误,只是执行没输出,为什么?
public class q21{
int maxElements;
void q21(){
maxElements=100;
System.out.println(maxElements);
}
public static void main(String[] args){
q21 a=new q21();
}
}
答案是在q21 a=new q21()处编译出错,原因是构造函数无返回值,故不允许写void,但我试了试,并没有编译错误,只是执行没输出,为什么?
|
如果你写了void q21(){。。。},那么这个q21()就不是
构造函数了(变成一个一般的叫做q21的函数)
这时q21 a=new q21();这一句就是让系统调用缺省(无参/null)构造函数了(
是编译器为你自动加上的),所以就不会输出System.out.println(maxElements);了
构造函数了(变成一个一般的叫做q21的函数)
这时q21 a=new q21();这一句就是让系统调用缺省(无参/null)构造函数了(
是编译器为你自动加上的),所以就不会输出System.out.println(maxElements);了