这是我的代码..假设我有三个类
public class ExtendsCheck {
public void move() {
System.out.println("M in Extends Check");
}
}
public class ExtendsCheck2 extends ExtendsCheck{
public void move() {
System.out.println("M in Extends Check 2");
}
}
public class ExtendsCheck3 extends ExtendsCheck2{
public static void main(String[] args)
{
ExtendsCheck3 e3 = new ExtendsCheck3();
e3.move();
}
}
当我致电e3.move()
时,来自move()
的方法ExtendsCheck2
会被调用。
如果我想调用 ExtendsCheck 类的 move(),我的问题是我该怎么做。
答案 0 :(得分:0)
要在继承的方法中调用父方法,请使用super
关键字。
例如对于ExtendsCheck2类,方法是:
public void move() {
super.move();
System.out.println("M in Extends Check 2");
}
将显示:
M in Extends Check
M in Extends Check 2
如果您想直接从ExtendsCheck3类调用ExtendsCheck类的move(),请重新考虑继承体系结构。如果您需要编写此类代码,那么您的类的体系结构就会出错。
答案 1 :(得分:0)
在课程中,您可以使用parent.move();
。
然而,没有这样的事情与parent.parent.move();
。原因是当父类被重构时这会破坏,例如插入一个抽象类,从而增加层次结构的深度。
最有可能的是,当您“需要”parent.parent.method()
时,继承设计中的某些内容已损坏,因为您似乎需要撤消父类的某些内容。
如果这是非常明智的,你可以随时让父类提供“旁路”功能,例如
@Deprecated
protected void originalMove() {
super.move();
}
将移动操作再次绑定到明确定义的父类。请注意我不建议使用此。最有可能的是,你设计中的某些东西被打破了例如,您可能希望在某处使用抽象类。
答案 2 :(得分:-2)
最简单的处理方式是:
Extends E = new Extends();
E.move();
或
super.move(); // as the first statement...