Java扩展类

Java扩展类,java,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)

}

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

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 
    } 
我有计算器工厂。 我有p和q。我可以在没有DefaultCalculator对象的情况下使用DefaultCalculator中的这些函数吗? 我想在没有Z的情况下使用函数getY和getX


我可以做些什么吗?我应该如何更改类的设计?

您的问题并不十分清楚,但如果我理解正确,您会问您是否可以使用
扩展计算器中的
DefaultCalculator
方法;如果是的话,答案是肯定的,来自父类的公共和受保护的方法和变量在扩展类中可用


只要您引用的对象是
DefaultCalculator
ExtendedCalculator
,您就应该能够访问
getY
getX
。至于你在谈论什么,我不知道这与我认为你在问的有什么关系。

这个问题不是很清楚。据我所知,您有
DefaultCalculator
和两种方法
getX(P P,Q)
getY(P P,Q)
,您希望调用这些方法而不创建类型为
DefaultCalculator
的新对象

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

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

1-我可以看到您有一个类
ExtendedCalculator
它扩展了
DefaultCalculator
,因此您可以创建对象
ExtendedCalculator
,并从该对象调用方法
getX(pp,Q)
getY(pp,Q)
,如下所示:

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;
        }
    }
}

2-您可以创建
静态方法
并直接通过类名调用。

为什么要进行向下投票?请说明你的问题不清楚。“那些功能”指的是哪些功能?你想在没有Z的情况下使用getY和getX是什么意思?他们的输入不依赖于Z。不,我的确切意思是如何使用DefaultCalculator的getX和getY方法。我所拥有的只是CalculatorFactory对象,p和qn没有创建DefaultCalculator的实例,我能想到的唯一方法是使这些方法成为静态的,并像
DefaultCalculator.getX(p,q)那样调用它们。我们可以改变整个设计来满足需要吗?我不知道你的意思。但是如果将方法更改为
publicstaticbigdecimal
,则不需要使用
DefaultCalculator
的实例来调用这些方法。
ExtendedCalculator someObj=new ExtendedCalculator();
someObje.getX(someVar1,someVar2);