Java面向对象 - 高级构造函数帮助? :\

时间:2013-03-19 16:41:37

标签: java oop

有人可以查看我的代码并确定我的代答功能无法正常工作的原因。

- 为这些程序编写缺少的方法

  • Dog bob = new Dog(5);
  • 的System.out.println(BOB);
  • bob.walk();
  • bob.walk();
  • bob.pickUp(“网球”);
  • 的System.out.println(BOB);
  • bob.drop();
  • bob.bark();
  • 的System.out.println(BOB);

- 在我的班级里,我已经定义了pickUp方法:

    public Head()
{

}

public void pickUp(String object)
{   
    this.object = object;
    System.out.println("Picked up "+object);
}

public String getObject()
{
    return object;
}

public void drop()
{
    System.out.println("Dropped "+object);
    object = null;
}

public void bark()
{
    System.out.println("WOOF!");
}

public String toString()
{
    return "Head is holding "+ object;
}
}

- 我正在使用该方法的另一个类:

public class Dog
{
private int position;
private Leg hind1;
private Leg hind2;
private Leg front1;
private Leg front2;
private Head head = new Head();

//Constructor for Dog class
public Dog(int position)
{
    hind1 = new Leg(position-2);
    hind2 = new Leg(position-2);
    front1 = new Leg(position+2);
    front2 = new Leg(position+2);
}

public void walk()
{
    front1.step();
    front2.step();
    hind1.step();
    hind2.step();
    System.out.println("Pitter patter...");
}

public String toString()
{
    return "Head is holding " + head+", Leg at "+hind1.position+", Leg at "+ hind2.position+", Leg at "+front1.position+", Leg at "+front2.position;
}   

public void pickup()
{
    head.pickUp(head.object);
} 

public void drop()
{
    head.drop();
}

public void bark()
{
    head.bark();
}

PS。 head是我创建的一个新对象,它属于Head类,这是第一个代码所在的位置。我正在尝试让第二个代码显示一个拾取的拾取对象。

-EDIT:即使我确实放了一个字符串(例如head.pickUp(“ball”);),当我尝试时它仍会显示“找不到符号 - method.pickUp(java.lang.String)”运行程序。

1 个答案:

答案 0 :(得分:2)

编辑(第三次!):既然你已经发布了你的代码,我已经确认我的答案是正确的。 Tl; dr - 你在设置之前尝试使用head.object。你应该传递给pickUp的是一个字符串,它代表你想要拾取的对象的名称。例如,head.pickUp(“ball”);


如果你能通过“不工作”澄清一点你的意思会有所帮助 - 但是,看起来你在这里遇到了一种鸡蛋问题:

如果我正确阅读,您的代码看起来像这样吗? (在评论中包括整个课程可能有帮助)

public class Head {

   String object;

   public void pickUp(String object)
   {   
       this.object = object;
       System.out.println("Picked up "+object);
   }

}

public class SomeOtherClass {

   Head head = new Head();

   public void pickup()
   {
       head.pickUp(head.object);

   } 
}
为了清楚起见,再次编辑(再次) - 看起来你正在尝试使用拾取功能(SomeOtherClass中的那个)来定义头部的对象属性。但是,通过使用head.object调用它,您可以假定已经定义了head.object。你在哪里设置你想要使用的字符串?

你在这里想要完成的事情并不是很清楚 - 但你可能想要尝试1)在head class的构造函数中设置head.object。或者2)使用除head.object之外的字符串调用head.pickUp(尚未设置)。 - 尝试用“Hello World”替换head.object,对于初学者来说。或者,如果我完全误解了你的意图,或许给我们更多的背景?

已编辑 - 因为我意识到你的拾取功能不在Head。