我是Java的新手,我看到了此示例代码。我不知道为什么在JavaApplication.java文件中我们需要通过new关键字创建一个新实例来设置山羊名,但是在Tiger.java中,不需要通过new关键字创建一个新实例来设置山羊名!有什么区别?
JavaApplication.java
public static void main(String[] args) {
Tiger t = new Tiger();
Goat g = new Goat();
Goat g1 = new Goat();
g.name = "goaty";
g1.name = "goatia";
t.name = "woofy";
t.hunt(g);
t.hunt(g1);
}
Tiger.java
public class Tiger {
String name;
void hunt(Goat food) {
System.out.println(name + " ate " + food.name);
}
}
Goat.java
public class Goat {
String name;
}
答案 0 :(得分:2)
在函数Tiger
内的hunt
类中,food
是类型Goat
的参数,并且该参数不需要由{{1}实例化}关键字。只需实例化该对象。
答案 1 :(得分:1)
我也是Java的新手,但是我在Java中了解到的是,您不能将非静态方法/变量链接到静态方法/变量,因此,您需要为其创建实例。 :)需要new关键字来创建它的实例。.
答案 2 :(得分:1)
据我所知,您已将山羊食物放置为参数,这意味着hunt方法将接受山羊类型的对象,基本上食物是山羊类型的引用变量,因此山羊可以做的任何事情也应适用于食物。在您的Goat类中,您只有一个名称字段。因此,每当创建一个对象时,您都可以为其命名。现在,您正在将Goat对象传递到您的方法中,以便打印出food.name您的山羊需要具有一个名字。
答案 3 :(得分:1)
只能使用'new'
关键字来创建山羊。创建山羊后,您可以将这只山羊给老虎吃。
所以这只山羊
void hunt(Goat food) {
System.out.println(name + " ate " + food.name);
}
已经创建,因此您无需再次创建。当然,您可以再次初始化它,但这毫无意义,因为如果老虎可以自己创造山羊,那么就不必猎杀山羊。