我有一个超类,比如说BaseClass和两个子类,比如说SubclassA和SubclassB,它们之间除了父类之间没有其他关系。在代码的很多地方,我需要调用两个子类都具有但父类都没有的方法...而且我发现自己在重复很多代码,如下所示:if (obj instanceof SubclassA) {// stuff} else if (obj instanceof SubclassB) {// same stuff}第一个想法应该是将“东西”放入超类的方法中,但我不能这样做,因为该超类是其他没有该行为的子类的父类...那么...有办法避免重复该代码的aaaalll吗?也许这两个子类都有一个共同的超类,而它本身就是超类的子类? 最佳答案 首先,多态性的概念是消除在调用对象的方法之前检查对象类型的需要。因此,在OO语言中这不必要。其次,之所以可以在接口上使用抽象父类,是因为子类型(子类)之间存在某些共享功能。因此,如果SubclassA和SubclassB之间存在共享的通用功能,则保持超类完整,否则将其切换到接口。同样,正如您所建议的那样,如果SubclassA和SubclassB具有共同的行为(但它们是自己的实现),则使用单独的API(如果BaseClass的其他子类型也没有共享该行为(您的通话)。在这种情况下,我将介绍包含方法#doStuff的接口Stuff,并让我的#doStuff和SubclassA都实现它,每个都提供自己的实现。然后,您的客户端可以将您的SubclassB实例视为obj,而不管它是真实类型,其余的事情都由多态完成。interface Stuff { void doStuff();}public class SubclassA extends BaseClass implements Stuff { // Does it need BaseClass still? public doStuff() { ... }}public class SubclassB extends BaseClass implements Stuff { // Does it need BaseClass still? public doStuff() { ... }}// Example client code...public class MyStuffClient { Stuff s = new SubclassA(); ... public void onStuff() { s.doStuff(); }}确定您是否真的需要suer类Stuff。关于java - 父类(super class)的子方法(java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21112438/ 10-10 18:24