如果判断多态?

程序员成长之旅 · 程序员成长之旅/Java学习/笔记 · 354 字

如果判断多态?


// Animal.java

package JClassHomework_21_12_8_2;

public abstract class Animal{// 一旦定义了抽象类, 就不能单独实例化了

String name;

String color;

public Animal(){

}

public Animal(String name, String color){

this.name = name;

this.color = color;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

// 抽象方法只能定义在抽象类

public abstract void eat();

public abstract void sleep();

}

// Cat.java

package JClassHomework_21_12_8_2;

public class Cat extends Animal{

public Cat(){

}

public Cat(String name, String color){

super(name, color);

}

@Override

public void eat() {

System.out.println(this.name + " is eating fish.");

}

@Override

public void sleep() {

System.out.println(this.name + " is sleeping on the bed");

}

}

// Dog.java

package JClassHomework_21_12_8_2;

public class Dog extends Animal{

public Dog(){

}

public Dog(String name, String color){

super(name, color);

}

@Override

public void eat() {

System.out.println(this.name + " is gnawing bone.");

}

@Override

public void sleep() {

System.out.println(this.name + " is sleeping on the floor");

}

}

// Raiser.java

package JClassHomework_21_12_8_2;

public class Raiser {

private String name;

public Raiser(){

}

public Raiser(String name){

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void feed(Animal animal){

animal.eat();

}

}

// Example5_6.java

// 入口

package JClassHomework_21_12_8_2;

public class Example5_6 {

public static void main(String[] args) {

// Animal animal = new Animal("someAnimal", "someColor");// 一旦定义为抽象类, 就不能单独实例化了

// 单独实例化不属于多态

Cat cat = new Cat("Cat", "white");

Dog dog = new Dog("Dog", "black");

System.out.println(cat.getName());

System.out.println(dog.getName());

Raiser mike = new Raiser("Mike");// 在Raiser中实现了多态

mike.feed(cat);// feed方法由Raiser定义, 会自动调用所有基于Animal基类的对象中的eat方法.

mike.feed(dog);

System.out.println("万宇晨 20203101019");

}

}