M机器猫M
2019-12-17 00:56
我如果把HelloWorld的构造方法改成void,创建对象的时候就不会调用了,必须得单独调用方法,为什么?
public class HelloWorld {
int num1;
int num2;
static int num3;
//这里改成void就是不一样的效果,在主函数中创建对象的时候就不会自动调用这个方法了,为啥??
public void HelloWorld() {
num1 = 91;
System.out.println("通过构造方法为num1变量赋值");
}
{
num2 = 74;
System.out.println("通过初始化块方式为num2变量赋值");
}
static {
num3 = 100;
System.out.println("通过静态初始化块方式为num3变量赋值");
}
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
//hello.HelloWorld();//单独调用方法的时候才能打印出"通过构造方法为num1变量赋值",否则不可以
System.out.println("num1:"+hello.num1);
System.out.println("num2:"+hello.num2);
System.out.println("num3:"+num3);
HelloWorld hello2 = new HelloWorld();
//hello2.HelloWorld();
}
}
输出结果:
通过静态初始化块方式为num3变量赋值
通过初始化块方式为num2变量赋值
num1:0
num2:74
num3:100
通过初始化块方式为num2变量赋值
加了 void 就是一个无参无返回值的普通方法,没有提供显式的构造方法,系统就会使用默认构造方法,所以就不会初始化 num1 这个值了。
构造方法的创建不能加返回值类型
Java入门第二季 升级版
530559 学习 · 6091 问题
相似问题