Java:嵌套类是解决这个问题的方法吗?

时间:2013-05-07 13:24:44

标签: java class nested

我有一个带有两个构造函数的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()。有没有更好的方法来实现我的愿望,或者我是在正确的轨道上?

非常感谢。

2 个答案:

答案 0 :(得分: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() {
    }

}

答案 1 :(得分:0)

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