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

来源:8-10 Java 中的 static 使用之静态初始化块

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变量赋值


写回答 关注

2回答

  • qq_五年_5
    2020-01-19 20:21:28

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

  • qq_寂寞的纠缠_prxBRU
    2019-12-17 09:30:10

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

    M机器猫M

    那可以加入参吗,那这样是说构造函数肯定是没有返回值得了吗

    2019-12-17 10:20:08

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题