在 Java 和继承中命名一个对象
Name an Object in Java and Inheritance
我正在学习 Java 并且喜欢通过示例来学习。这是关于继承和变量的。
Animal.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...");
}
}
Dog.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!
一只狗吠叫
一只狗在睡觉...
一只狗吠叫
一只狗在睡觉...
菲多吠叫
期望输出:
已创建新动物!
已创建 Fido!
一只狗吠叫
一只狗在睡觉...
菲多吠叫
Fido 睡觉...
问题:
如何给狗取名 ONCE。所以我想在这段代码中命名 Fido ONCE。我也知道我可以说:Fido.speak("Fido");
但这弄乱了数组。也显得不合逻辑。
为什么是数组?
我还有其他几个 Cow、Bird 等。我想要一个通用的打印输出,然后在我希望添加一个名称时为对象设置一个名称。
感谢您的阅读和您的宝贵时间! :)
----------------------------在帕特里夏的提示之后------------ ------------------
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!");
}
让Animal有一个名字,然后在消息中使用这个名字。
我正在学习 Java 并且喜欢通过示例来学习。这是关于继承和变量的。
Animal.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...");
}
}
Dog.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!
一只狗吠叫
一只狗在睡觉...
一只狗吠叫
一只狗在睡觉...
菲多吠叫
期望输出:
已创建新动物!
已创建 Fido!
一只狗吠叫
一只狗在睡觉...
菲多吠叫
Fido 睡觉...
问题:
如何给狗取名 ONCE。所以我想在这段代码中命名 Fido ONCE。我也知道我可以说:Fido.speak("Fido"); 但这弄乱了数组。也显得不合逻辑。
为什么是数组?
我还有其他几个 Cow、Bird 等。我想要一个通用的打印输出,然后在我希望添加一个名称时为对象设置一个名称。
感谢您的阅读和您的宝贵时间! :)
----------------------------在帕特里夏的提示之后------------ ------------------
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!");
}
让Animal有一个名字,然后在消息中使用这个名字。