Java:Subclass类及其子类(都在我的范围之外)同时

时间:2013-04-22 20:16:23

标签: java subclass extends repeat

给定两个类,一个是另一个类的子类,都在我的范围之外,所以我对它们没有任何影响,例如。

public class Bla {
}

public class SubBla extends Bla {
}

如何在不重复代码或限制SubBla特殊功能的情况下创建Bla和SubBla的自定义子类?

编辑:所以我不必:

public class MyBla extends Bla {
    public void someOverriddenMethodOfBla()
    {
        super.someOverriddenMethodOfBla();
        // do something custom
    }
}

public class MySubBla extends SubBla {

    // repeated code: this should do the same as MyBla's customized method
    public void someOverriddenMethodOfBla()
    {
        super.someOverriddenMethodOfBla();
        // do the same custom stuff as in MyBla's method
    }

}

编辑2,清除小事:

假设我需要android类Activity和ListActivity,它是Activity的子类。现在,我想将onCreate方法中的相同自定义添加到两者。如何在不重复代码的情况下完成此操作?

谢谢!

3 个答案:

答案 0 :(得分:1)

如果我理解正确,你试图绕过SubBla的实现,并直接从Bla的子类调用SubBla的实现。你要做的实际上是调用super.super,这在Java中无法完成

对此here有一个很好的解释。

答案 1 :(得分:0)

实际上,继承的目的是重用代码。在java中只存在公共继承,这意味着方法的可访问性将通过继承保持不变。

如果你做了MyBla扩展Bla,那么来自Bla的所有公共方法仍将在MyBla类中保持可见。

答案 2 :(得分:0)

考虑您的Android ActivityListActivity的示例,将ListActivity作为CustomListActivity的子类。在CustomListActivity中添加您的onCreate()版本。现在,您可以在应用程序中使用Activity,而不是使用ListActivityCustomListActivity