我正在学习 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/