我有一个类,它扩展了我需要覆盖的类,但我需要调用该类的父类.因为我不能打电话给super因为那将执行直接父母什么是获得我父类的父母的最佳方式?
我确信这是一个基本问题,但是我已经做了一段时间了.
class A
{
public void myMethod()
{ /* ... */ }
}
class B extends A
{
public void myMethod()
{ /* Another code */ }
}
class C extends B
{
I need to call Class A here
{ /* Another code */ }
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 30
你不这样做:它违反了封装.
可以这么说,"不,我不想要我自己的行为 - 我想要我父母的行为",因为假设你只有在正确维护自己的状态时才这样做.
但是,您无法绕过父母的行为 - 这会阻止它强制执行自己的一致性.如果父类想要允许您直接调用祖父项方法,它可以通过单独的方法公开...但这取决于父类.
你不能因为它被B覆盖了.C里面没有A的实例.
问题是你要调用A类的方法,但是从哪个实例?你已经实例化了C,它是一个带有两个自己和继承方法的类.如果B重写了A的方法,你就无法从C访问它,因为方法本身属于C(不是方法) B,它已被继承,现在它在C)
可能的解决方法:
B不会覆盖 myMethod()
C接收A的实例并将其保存为类属性.
myMethod()在A中是静态的你使用A.myMethod()(我不推荐)
你问的是不好的做法,你所说的是C不是B,而是A.你需要做的是让C继承A.然后你可以打电话给super.
如果不是这是唯一的方法......
public String A()
{
String s = "hello";
return s;
}
public String B()
{
String str = super.A();
return str;
}
public String C()
{
String s = super.B();
return s;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22706 次 |
| 最近记录: |