确定用于调用子类中的方法的超类引用

藤蔓

我已经被问过几次了,而我完全困惑于如何以及为什么会这样做。

这是场景:

interface IntA {
    void someMethod();
}
interface IntB {
    void someMethod();
}

两个简单的界面;在下面的简单类中实现

class ClassAB implements IntA,IntB {
    @Override
    public void someMethod(){
        //some logic
    }
}

然后我们可以像这样实例化和使用:

IntA a = new ClassAB();
a.someMethod();

或通过其他界面:

IntB b = new ClassAB();
b.someMethod();

现在的问题在于的实现someMethod(),我能找出他们是使用IntA引用还是IntB引用来调用someMethod()因此,执行不同的逻辑。

老实说,我认为这是一个错误的问题。我不明白为什么以及如何做到这一点。从接口的角度来看,它具有满足功能签名标准的实现,并且至关重要。如果IntAIntB预期结果不同,则应在两个不同的类中实施它们。

我已经两次遇到这种情况,所以我要问为什么。真的有办法确定吗?有其他方法可以做到C/C++吗?

财富

您不仅不能真正做到这一点(除了一些复杂的巫术之外),而且正如您所说的那样,甚至没有充分的理由去尝试这样做。

甚至可能出现这种情况的唯一情况是,如果您不小心将相同的方法签名赋予了两个常用的接口,并且最终可能在同一类中一起实现,但具有不同的功能。但这是接口方面的设计错误。

周围没有干净的方法,甚至不干净的方法也是如此复杂,以至于没有任何头脑正确的人会尝试它。正确的做法是重构接口之一以使用不同的方法签名。如果这种情况已经出现两次,也可能是更大的设计问题的征兆

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

超类引用无法在Java中调用子类方法

从超类调用子类方法

如何在Groovy中从静态超类方法引用子类

如何从修饰的子类方法中调用重写的超类方法

Java:从超类构造函数中的子类调用的方法

您如何在Java中从超类调用子类方法?

为什么从子类的超类调用方法中获得“ this”?

从超类对象数组中调用子类方法

在向量C ++中从超类调用子类方法

Java继承:在超类中调用子类方法

从 Java 中超类类型的 ArrayList 调用子类方法

调用超类方法而不是子类方法

NSNotificationCenter从超类或子类调用方法?

如何使子类自动调用超类方法

当子类对象存储在超类数组中时,如何调用子类方法?

Java多态性-如何确定是否将调用超类vs子类方法以及超类变量vs子类变量?

对超类对象的子类引用

如何确保某些方法从子类(Java)中的方法从抽象超类中调用

在子类的方法中本地调用超类方法时,使用“ super”关键字还是使用超类实例?

通过超类实例调用子类类的方法

为什么我的超类在Swift中调用子类的方法而不是它的方法?

在Java中,“ this”在继承该方法的子类上调用的超类方法中表示什么?

Javascript ES6:如何从超类中定义的静态方法中检索调用子类

可以在子类的方法内部使用“ super”来调用相应的超类方法而无需直接引用吗?

使用子类和超类引用访问实例方法

如何将装饰器应用于子类中的超类方法?

如何从重写的子类方法调用超类的继承方法?

打字稿:在超类中引用子类属性?

有没有更简单的方法可以在Java中的子类和超类的ArrayList上调用子类的方法