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。
我可以这样做吗?我该如何改变课程的设计?
答案 0 :(得分:1)
您的问题并不清楚,但如果我理解正确,您可以使用DefaaultCalculator
中的ExtendedCalculator
方法。如果是这样,答案是肯定的,来自父类的公共和受保护方法和变量在扩展类中可用。
只要您引用的对象是DefaultCalculator
或ExtendedCalculator
,您就应该能够访问getY
和getX
。至于你与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
方法并直接按类名调用。