【问题标题】:Do constructor( that we code ) replaces the default constructor?构造函数(我们编写的代码)是否替换了默认构造函数?
【发布时间】:2020-08-05 08:23:52
【问题描述】:
public class A {
  int i;
  int j;

  A() {
    i = 3; // I have not intialized j;
  }

  public static void main(String[] args) {
    A obj = new A();
    // Why obj.j is printed if my constructor had initialized int j?
    System.out.println(obj.i + obj.j); 
  }
}

如果我们的编码构造函数替换了默认构造函数,那么我没有在构造函数中初始化的引用值如何获得默认值

【问题讨论】:

  • 未初始化的字段获得默认值。构造函数不需要设置它们。
  • "为什么打印 obj.j" 你没有直接打印obj.j

标签: java class constructor


【解决方案1】:

所有实例变量都有默认值,无论是否有任何构造函数初始化它们。所有数字原始实例变量的默认值都是 0,即代码中 j 的值(即使您尚未对其进行初始化)。

【讨论】:

  • 那为什么java有默认的构造函数呢?
  • @AdarshChaubey 原因之一是必须在某处调用super(..),并且该位置被指定为构造函数(显式或隐式)。
猜你喜欢
  • 2017-07-15
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多