super之前的java调用方法

标签 java constructor super

假设我有一个父类(super class),它的构造函数中有 3 个参数,我正在继承这个类,它也有一个带 3 个参数的构造函数,我想调用父类(super class)构造函数,但在我想对首先子类,我可以调用一个接收这 3 个参数的静态方法,但我必须只返回一个,所以这是我想出的解决方案

public class someClass extends  SuperClass {
    public someClass(int a,int b,int c) {
         super(func(a,b,c),b,c);
    }
    public static int func(int a,int b,int c){
        //usage a b c
        return a;
    }
}

好像有点丑,想知道有没有更好的方案自己使用参数,然后定时调用super。请注意,我无法更改父类(super class)或子类的用法,因此无法更改工厂设计模式

最佳答案

要从构造函数中获取逻辑,您可以轻松地在子类中创建一个工厂方法:

public class SomeClass extends SuperClass {
    private SomeClass(int a, int b, int c) {
        super(a, b ,c);
    }

    public static SomeClass create(int a, int b, int c){
        // calculate a for constructor

        return new SomeClass(a, b, c);
    }
}

然后你可以创建实例如下:

SomeClass someClass = SomeClass.create(1, 2, 3);

关于super之前的java调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48297240/

相关文章:

java - 文字不在图像前面

c++ - 解构c++类运算符重载和构造函数初始化列表

java - 在Java中调用 super 构造函数的方法,对吗?

java - 在 Facebook 中查找个人资料网址

java - 当我尝试打印 char(-1) 时,它如何在 Java 中打印 '?'

Java:使用正则表达式查找 URL 将它们转换为 html 链接。同时检测链接是否包含http://,如果没有,追加它

perl - 无法在perl中重载构造函数

c++ - 继承中的构造函数

java - 在对父类(super class)构造函数的 super 调用中使用子类方法作为参数

java - 尝试调整 gridworld 网格时遇到问题