给定两个类,一个是另一个类的子类,都在我的范围之外,所以我对它们没有任何影响,例如。
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方法中的相同自定义添加到两者。如何在不重复代码的情况下完成此操作?
谢谢!
答案 0 :(得分:1)
如果我理解正确,你试图绕过SubBla
的实现,并直接从Bla
的子类调用SubBla
的实现。你要做的实际上是调用super.super
,这在Java中无法完成
对此here有一个很好的解释。
答案 1 :(得分:0)
实际上,继承的目的是重用代码。在java中只存在公共继承,这意味着方法的可访问性将通过继承保持不变。
如果你做了MyBla扩展Bla,那么来自Bla的所有公共方法仍将在MyBla类中保持可见。
答案 2 :(得分:0)
考虑您的Android Activity
和ListActivity
的示例,将ListActivity
作为CustomListActivity
的子类。在CustomListActivity
中添加您的onCreate()
版本。现在,您可以在应用程序中使用Activity
,而不是使用ListActivity
或CustomListActivity
。