超类和子类Java

时间:2011-11-17 20:55:49

标签: java subclass superclass

我的超级班叫做#34; BossCraft"其中包括标有"移动"的空白方法。 我还有一个扩展BossCraft的课程叫做SharkBoss,它也有一个空白"移动"方法。

是否有可能以某种方式致电SharkBoss"移动"进入更高BossCraft方法的方法?

public class BossCraft
{
   public void move
   {
      //SharkBoss's move should go here
   }
}
public class SharkBoss extends BossCraft
{
   public void move
   {
      ...
   }
}

6 个答案:

答案 0 :(得分:3)

是的,super.move()super.表示调用(超类)的方法)

如果你想反过来 - 从超类调用子类 - 这是不可能的。超类不知道(也不应该知道)它的子类是否存在。

请注意,您的定义在语法上是不正确的 - 您应该有括号 - move()

答案 1 :(得分:0)

使用

super.move();

它将调用其父级的move()函数(即其超类实例)!

答案 2 :(得分:0)

我想调用父方法,用户超级关键字 如果你想调用child的方法,我会看一下Abstract classes

答案 3 :(得分:0)

是:

BossCraft craft = new SharkBoss();
// Actually calls SharkBoss.nove
craft.move();

答案 4 :(得分:0)

你不应该这样做。整个继承点是SharkBoss总是BossCraft,但是BossCraft可能是也可能不是SharkBoss。 SharkBoss工艺的方法应该只适用于SharkBoss。

如果您致电'移动'在SharkBoss上,SharkBoss的行动将被召唤,而你无需做任何事情。

答案 5 :(得分:0)

你可以在超类的移动方法中简单地转换为SharkBoss:

public class BossCraft {
   public void move(){
       //SharkBoss's move should go here
   SharkBoss s = (SharkBoss) this;
   s.move();
   }
}

然而,使用子类的原则是它应该是单向关系,超类不应该知道它们的子类。我建议你重构。