错误 - 构造函数Level2Class(double)未定义

dav*_*ine 1 java

我的代码 -

public abstract class Level1Class
{
  protected double num = 0.0D;  
  protected Level1Class(){}
  protected Level1Class(double num){this.num = num;}
  protected abstract methods A, B, C...etc //pseudocode !

}

public class Level2Class extends Level1Class
{
  //NO CONSTRUCTORS HERE
  //BUT, only implementation of methods A,B, C
} 

public class Tester
{
  Level2Class l2c = new Level2Class(10.0D); //This causes the compiler error ! 
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么会收到此错误.我知道如果我在Level2Class中创建必要的构造函数,它会发生.但是,我想知道原因.

Ale*_*s G 5

您描述的行为的主要原因是Java构造函数不是继承的.创建类时,您有两种选择:

  1. 根本不指定任何构造函数(如在您的示例中).在这种情况下,编译器将自动添加默认构造函数(不带参数).

  2. 创建特定的构造函数(带参数或不带参数).在这种情况下,只有您定义的构造函数将存在于类中,编译器不会添加默认构造函数.

在您的示例中,您没有在类中定义任何构造函数Level2Class,因此编译器添加了没有参数的默认构造函数.带有参数的构造函数double在编译的类中不存在,因此您的错误构造函数未定义.