Java - 扩展类

时间:2014-04-23 16:30:21

标签: java

public class DefaultCalculator
{
    public Boolean isEligibleForNewProcess(Z z)
    {
         // Do Something 
    }

    public BigDecimal getY(P p, Q q)
    {
        return y;
    } 

    public BigDecimal getX(P p, Q q)
    {
        return x;
    }
}

public class ExtendedCalculator  extends DefaultCalculator
{
    public Boolean isEligibleForNewProcess(Z z)
    {
       // Do Something  diffrent 
    } 

}

我有一个工厂基本上实例化其中一个。

public class CalculatorFactory
{

    @Autowired
    DefaultCalculator defaultCalculator;

    @Autowired
    ExtendedCalculator extendedCalculator;


    public DefaultCalculator getCalculator(Z z){
        switch (z.getType()) {
        case a:
            return defaultCalculator;
        case b: 
            return extendedCalculator;
        default:
            return null;
        }
    }
}

我有计算器工厂。 我有p和q。我可以在DefaultCalculator中使用那些没有DefaultCalculator对象的函数吗? 我想在没有Z的情况下使用函数getY和getX。

我可以这样做吗?我该如何改变课程的设计?

2 个答案:

答案 0 :(得分:1)

您的问题并不清楚,但如果我理解正确,您可以使用DefaaultCalculator中的ExtendedCalculator方法。如果是这样,答案是肯定的,来自父类的公共和受保护方法和变量在扩展类中可用。

只要您引用的对象是DefaultCalculatorExtendedCalculator,您就应该能够访问getYgetX。至于你与Z谈论的内容,我不知道这与我认为你所问的相关。

答案 1 :(得分:0)

问题不是那么清楚。据我所知,您拥有DefaultCalculator拖曳方法getX(P p, Q q)getY(P p, Q q),并且您希望在不创建DefaultCalculator类型的新对象的情况下调用这些方法。

基本上,如果你想在某个类中调用一个方法,你必须创建该类的对象。但您可以执行以下操作之一:

(注意:我不知道你要做什么,但这可能会有所帮助)

1-我可以看到你有班级ExtendedCalculator 这扩展了DefaultCalculator,以便您可以创建对象ExtendedCalculator并从该对象调用方法getX(P p, Q q)getY(P p, Q q),如下所示:

ExtendedCalculator someObj=new ExtendedCalculator();
someObje.getX(someVar1,someVar2);

2-您可以创建static方法并直接按类名调用。