我想要递归构造函数调用 - 如何解决错误?

问题描述 投票:-1回答:1

我正在为一个正在进行的课程编写一个有趣的作业,而且它的所有关于多态性和编码对象等...基本上,我们被要求编写一个与其他学生生物作斗争的“生物”对象。

当我的生物对象上调用某个方法时,我怎么能这样做呢(丢失(),当我的生物失去战斗时)它再次调用自己的构造函数以使它“重生”?

这是我的代码。

import java.awt.*;
import java.util.*;

public class Husky extends Critter {
   //fields
   private int x = getWidth();
   private int y = getHeight();
   private Random r = new Random();
   private Direction[] directions = {Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST};

   public Husky() {}

   public boolean eat() {
      return true;
   }

   public Attack fight(String opponent) {
      if (opponent.equals("%")) {
         return Attack.ROAR;
      } else if (opponent.equals("^") || opponent.equals(">") || opponent.equals("V")
     || opponent.equals("<") || opponent.equals("0")) {

     return Attack.SCRATCH;
      } else {
         return Attack.ROAR;
      } 
   }


   public Direction getMove() {
      int z = r.nextInt(4);
      return directions[z];
   }  

   public Color getColor() {
      return Color.CYAN;
   }

   public String toString() {
      return "∏";
   }

   public void lose() {
      this();
   }
}

基本上,我希望我的小动物不朽。可能吗?

java recursion constructor invocation
1个回答
0
投票

你可以失去创造一个新的赫斯基

public void lose() { new Husky(); }

或者返回一个:

public Critter lose() {  return new Husky();  }
© www.soinside.com 2019 - 2024. All rights reserved.