如果判断多态?
程序员成长之旅 · 程序员成长之旅/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");
}
}