为什么我的超类的字段在这里被初始化?

Pho*_*nix 0 java

我希望有人来验证我的理解是否正确.我有一些像这样的代码:

public class A {
int a;
int b;
public A(int a)
{
    this.a=a;
}
Run Code Online (Sandbox Code Playgroud)

现在A()是我定义的构造函数,这意味着它不是默认的构造函数.所以,如果我有一个扩展这个类的子类.

public class B extends A{
public B()
{ 
   super(15);
}

}
Run Code Online (Sandbox Code Playgroud)

如果我在子类中打印a和b的值,我看到a的值为15,b的值为0.当我在A中明确定义了一个构造函数,这意味着它不是默认的构造函数,那么是A类中未初始化的字段,得到0的值?

jue*_*n d 6

int是一种原始类型,不可能null.默认值为0.

  • Java会自动http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (2认同)