java 构造函数什么时候被调用执行
class M {
M() {
System.out.println("Hello world!");
}
public static void main(String[] args) {
M m = new M();
}
}
问题:请问结果为什么会输出“Hello world!”,在main中我只是创建了一个对象,并没有使用该对象,怎么会执行输出语句
呢?
请各位高手指点,我这是哪个知识点没掌握好,谢谢。
------解决方案--------------------M m = new M(); 调到了
System.out.println("Hello world!");
------解决方案--------------------构造函数M()在新建对象new M()时会被调用
------解决方案--------------------new的时候
------解决方案--------------------当新创建一个对象的时候,会调用类的构造函数。呵呵,比较基础的东西,可以先看看书。
------解决方案--------------------class M {
M() {
System.out.println("Hello world!");
}
public static void main(String[] args) {
M m = new M();
}
}
在这个类里面,你不写
M() {
System.out.println("Hello world!");
}
也是对的,为什么呢?因为当类没有构造函数的时候,系统会自动给相关的类默认一个无参的构造函数,但是当有构造函数时,系统不会默认构造函数。
构造函数的作用就是初始化的时候调用,所以你的类会输出Hello world!
------解决方案--------------------你自己可以定义好多构造函数,分带参数的构造函数跟不带参数的构造函数。
如果你在new的时候不带参数,则会调用不带参数的构造函数,new的时候带参数,则会执行带相应参数的构造函数。
------解决方案--------------------构造函数之所以叫做构造函数··有一个特性你要记住··就是你构造这个类的对象的时候就必须执行构造函数·要有构造函数才能构造一个对象··也就是说·一个构造函数的执行和对象的构造是同步的·或者说·构造函数执行了之后才能构造对象··
------解决方案--------------------在java语言 中,构造函数又称构造方法。特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。