相关疑难解决方法(0)

Java错误:默认构造函数未定义隐式超级构造函数

我有一些简单的Java代码,在其结构中看起来与此类似:

abstract public class BaseClass {
    String someString;
    public BaseClass(String someString) {
        this.someString = someString;
    }
    abstract public String getName();
}

public class ACSubClass extends BaseClass {
    public ASubClass(String someString) {
        super(someString);
    }
    public String getName() {
        return "name value for ASubClass";
    }
}
Run Code Online (Sandbox Code Playgroud)

我将有很多子类BaseClass,每个子类以getName()自己的方式实现该方法(模板方法模式).

这很好用,但我不喜欢在子类中使用冗余构造函数.打字更多,难以维护.如果我要更改BaseClass构造函数的方法签名,我将不得不更改所有子类.

当我从子类中删除构造函数时,我得到了这个编译时错误:

Implicit super constructor BaseClass() is undefined for default constructor. Must define an explicit constructor

我正在尝试做什么?

java inheritance dry boilerplate

87
推荐指数
3
解决办法
19万
查看次数

Java继承示例

以下是继承的示例

class Parent {
    Parent(int a, int b) {
        int c = a + b;
        System.out.println("Sum=" + c);
    }
    void display() {
        System.out.println("Return Statement");
    }
}
class Child extends Parent {
    Child(int a, int b) {
        int c = a - b;
        System.out.println("Difference=" + c);
    }
}
public class InheritanceExample {
    public static void main(String args[]) {
        Child c = new Child(2, 1);
        c.display();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我没有非参数化构造函数parent()时,我得到以下错误

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Implicit super constructor Parent() is …
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×2

boilerplate ×1

dry ×1

inheritance ×1