gpt4 book ai didi

java - Java 中的对象命名和继承

转载 作者:行者123 更新时间:2023-12-01 11:25:58 24 4
gpt4 key购买 nike

我正在学习 Java,喜欢通过示例来学习。这是关于继承和变量。

动物.java

package inheritance; 
public class Animal {
String name;

public Animal (){
System.out.println("A new animal has been created!");
}

public Animal (String name){
System.out.println(name + " has been created!");
}

public void sleep() {
System.out.println ("An animal sleeps...");
}

public void speak(){
System.out.println("An animal *speaks*");
}

public void eat() {
System.out.println ("An animal eats...");
}

}

狗.java

package inheritance;

public class Dog extends Animal {

public Dog(){
super();
}

public Dog(String name){
super();
System.out.println(name + " has been created!");
}

public void sleep(){
System.out.println("A dog sleeps...");
}

public void speak(){
System.out.println("A dog *barks*");
}

public void speak(String name){
System.out.println(name + " *barks*");
}

public void eat() {
System.out.println("A dog eats...");
}

}

Zoo.java

package inheritance;

import java.util.ArrayList;
import java.util.List;

public class Zoo {

public static void main(String[] args)
{
Dog ruffruff = new Dog();
Dog Fido = new Dog("Fido");

System.out.println();

List<Animal> Animals = new ArrayList<Animal>();
Animals.add(ruffruff);
Animals.add(Fido);

for (Animal AnAnimal:Animals) //for each structure.
{
AnAnimal.speak();
AnAnimal.sleep();
}
Fido.speak("Fido");
}
}

输出:

一种新动物被创造出来了!

一种新动物被创造出来了!

Fido 已创建!

一只狗吠叫

狗在 sleep ......

一只狗吠叫

狗在 sleep ......

菲多吠叫

所需输出:

一种新动物被创造出来了!

Fido 已创建!

一只狗吠叫

狗在 sleep ......

菲多吠叫

Fido sleep ...

问题:

我怎样才能给一只狗命名一次。所以我想在这段代码中命名 Fido ONCE。我也知道我可以说:Fido.speak("Fido");但这会扰乱数组。也显得不合逻辑。

为什么选择数组?

我还有其他几头牛、鸟等。我想要一个通用的打印输出,然后当我需要添加名称时为该对象设置一个名称。

感谢您的阅读和您的时间! :)

------------------------------经过帕特里夏的提示-------------- ---------------

package inheritance;

public class Animal {
protected String name = "";

public Animal (){
System.out.println("A new animal is born!");
}

public Animal (String name){
this.name = name;
System.out.println("A " + name + " is born!");
}

public void sleep() {
if (name.isEmpty())
{
System.out.println("An animal sleeps...");
}
else
{
System.out.println ("A " + name + " sleeps...");
}
}

public void speak() {
if (name.isEmpty())
{
System.out.println("An animal speaks...");
}
else
{
System.out.println ("A " + name + " speaks...");
}
}

public void eat() {
if (name.isEmpty())
{
System.out.println("An animal eats...");
}
else
{
System.out.println ("A " + name + " eats...");
}
}
}

最佳答案

我会改变你的构造函数之一:

public Dog(String name){
super();
System.out.println(name + " has been created!");
}

public Dog(String name){
super(name);
System.out.println(name + " has been created!");
}

让动物有一个名称,然后在消息中使用该名称。

关于java - Java 中的对象命名和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806211/

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