gpt4 book ai didi

java - 对象未在另一个类中读取 - Java

转载 作者:行者123 更新时间:2023-11-29 08:26:46 25 4
gpt4 key购买 nike

如果之前有人问过这个问题,我深表歉意。

这里有 2 个文件:Dog.java 和 DogTest.java。

狗.java:

public class Dog{
String name;

public Dog(String name){
System.out.println("Name chosen is : " + name);
}
public static void main(String[]args){
Dog dog1 = new Dog("Big Larry");
Dog dog2 = new Dog("Mr. Cuddles");
}
public void bark(){
System.out.println(name + " is barking.");
}
public void eat(){
System.out.println(name + " is eating.");
}
public void sleep(){
System.out.println(name + " is sleeping.");
}
}

这里是 DogTest.java:

public class DogTest {
public static void main(String[] args) {
dog1.bark();
dog2.bark();
dog1.eat();
dog2.sleep();
dog1.sleep();
}
}

现在,在 Dog java 文件中,它显示 dog1 和 dog2 未初始化,如我的 IDE 中所述。然而,在 DogTest 文件中,我将对象变量放在那里。我不明白的是,为什么它们没有被初始化?

如果我在 DogTest.java 文件中再次重新初始化它们,DogTest 会编译,没有错误,但是当它们应该读取“Big Larry is barking”时,它在输出中称它们为“null”。或“Cuddles 先生在 sleep 。”,而不是“null 在吠叫。”

我想了解一下。非常感谢您的帮助,祝您有美好的一天!请在评论中留下任何问题。

最佳答案

这是你的问题:

public Dog(String name){
System.out.println("Name chosen is : " + name);
}

您将名称传递给构造函数,但实际上并未设置值。

将此更改为:

public Dog(String name){
System.out.println("Name chosen is : " + name);
this.name = name;
}

不确定为什么在那里需要打印语句。

此外,在您的测试类中,不要忘记实际声明和初始化变量:

Dog dog1 = new Dog("Max");
dog1.bark();

它们没有在您的测试类中初始化,因为它们是在 main 方法的本地范围内初始化的,这对于您的测试类来说是/不可达的。

关于java - 对象未在另一个类中读取 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com