Java 默认构造函数

本教程将介绍Java 默认构造函数的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Java 默认构造函数 教程 第1张

问题描述

究竟什么是默认构造函数——你能告诉我以下哪一个是默认构造函数以及它与任何其他构造函数的区别吗?

public Module() {
this.name = "";
this.credits = 0;
this.hours = 0;
}

public Module(String name, int credits, int hours) {
this.name = name;
this.credits = credits;
this.hours = hours;
}

推荐答案

两者都不是.如果你定义它,它就不是默认的.

除非您定义另一个构造函数,否则默认构造函数是自动生成的无参数构造函数.任何未初始化的字段都将设置为其默认值.对于您的示例,假设类型是 Stringintint,并且该类本身是公共的,它看起来像这样:

public Module()
{
  super();
  this.name = null;
  this.credits = 0;
  this.hours = 0;
}

这完全一样

public Module()
{}

和完全没有构造函数完全一样.但是,如果您定义了至少一个构造函数,则不会生成默认构造函数.

参考:Java 语言规格

如果一个类不包含构造函数声明,则隐式声明一个没有形式参数且没有 throws 子句的默认构造函数.

澄清

从技术上讲,默认初始化字段的不是构造函数(默认或其他).但是,我将其保留为答案,因为

问题的默认设置错误,并且

无论是否包含构造函数,其效果完全相同.

好了关于Java 默认构造函数的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。