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