为了账号安全,请及时绑定邮箱和手机立即绑定

我如果把HelloWorld的构造方法改成void,创建对象的时候就不会调用了,必须得单独调用方法,为什么?

我如果把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变量赋值


正在回答

2 回答

加了 void 就是一个无参无返回值的普通方法,没有提供显式的构造方法,系统就会使用默认构造方法,所以就不会初始化 num1 这个值了。

0 回复 有任何疑惑可以回复我~

构造方法的创建不能加返回值类型

0 回复 有任何疑惑可以回复我~
#1

M机器猫M 提问者

那可以加入参吗,那这样是说构造函数肯定是没有返回值得了吗
2019-12-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我如果把HelloWorld的构造方法改成void,创建对象的时候就不会调用了,必须得单独调用方法,为什么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信