0

我有一个带有两个构造函数的 Java 类。这个类中有很多方法。无论使用哪个构造函数,这些方法中的大多数都会正确运行,但有些方法需要不同的行为。假设 methodA() 是后者,我可以重新创建它并使用两个具有不同名称的方法,但这意味着在应用程序的其余部分重构大量代码,并且通常看起来是一个糟糕的解决方案。下面是一些代码来演示:

public class Example {

     public Example(int x, int y) {}
     public Example(int x){}

     public methodA(){
          //If the first constructor is called, this method needs to behave 
          //differently than if the second were called.
     }

     public methodB(){
          //But I still want access to this method, which behaves the same regardless
     }

我的想法是使用嵌套类,创建两个嵌套类,它们具有不同的methodA()但在父类中具有相同的methodB()。有没有更好的方法来实现我的愿望,或者我是否走在正确的轨道上?

非常感谢。

4

2 回答 2

2

经典继承应该适合您的需求:

public class SuperExample {

    public SuperExample(int x) {
    }

    public void methodA() {
    }

    public void methodB() {
    }

}

public class SubExample extends SuperExample {

    public SubExample(int x, int y) {
        super(x);
    }

    @Override
    public void methodA() {
    }

}
于 2013-05-07T13:28:29.617 回答
0

听起来你想在这里应用多态性。创建一个包含所有常用方法的父类和创建不同行为的子类。实例化可以通过工厂进行(如果不确定,可以查找工厂模式),具体取决于参数。

于 2013-05-07T13:30:15.843 回答