首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java抽象类、抽象构造函数

Java抽象类、抽象构造函数
EN

Stack Overflow用户
提问于 2015-01-06 14:00:44
回答 3查看 4.3K关注 0票数 4

我试图找到一种方法来强制用户实现一个接口或扩展一个类来创建多个构造函数。我认为这样做的一种方法是在抽象类中创建一个抽象构造函数,但我发现我不能这样做。

我怎样才能解决这个问题?有什么方法可以强迫用户创建特定的构造函数吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-06 14:04:01

不是的。但是,由于构造函数通常被分解方法所替代,所以您可以实现抽象分解方法,或者仅仅实现其他模式,比如构建模式。

票数 7
EN

Stack Overflow用户

发布于 2015-01-06 14:08:00

您不能创建一个abstract构造函数,但是这里有一个解决办法,您可以这样做:

使用您希望用户实现的所有构造函数实现一个abstract类。在每个语句中,都有一个语句引用来自该类的abstract方法,实现将在子类中。通过这种方式,您将强制用户通过抽象方法实现为构造函数提供一个主体。例如:

代码语言:javascript
复制
public abstract class MyAbstractClass {
    public MyAbstractClass(int param) {
        method1(param);
    }

    public MyAbstractClass(int param, int anotherParam) {
        method2(param, anotherParam);
    }

    protected abstract void method1(int param);

    protected abstract void method2(int param, int anotherParam);
}

在实现中,您将被迫提供这两个方法的实现,这两个方法可以表示两个构造函数的主体:

代码语言:javascript
复制
public class MyClass extends MyAbstractClass {
    public MyClass(int param) {
        super(param);
    }

    public MyClass(int param, int anotherParam) {
        super(param, anotherParam);
    }

    public void method1(int param) {
        //do something with the parameter
    }

    public void method2(int param, int anotherParam) {
        //do something with the parameters 
    }
}
票数 8
EN

Stack Overflow用户

发布于 2015-01-06 14:02:29

不没有。

但是,您可以构建一个单元测试框架,该框架利用反射来确保存在正确的构造函数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27800229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档