不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java的多态(接口/抽象类)
1.构建一个食物抽象类,Bone和Fish分别为其实现类,通过super传参。
2.构建一个动物类,对于Dog类和Cat类,分别使用多态,使food父类引用实现子类方法。
3.构建饲养员类,分别传入Food类和Animal类,多态的应用。
abstract class Animal { String name; public Animal(String name) { this.name = name; } public String name() { return name; } public abstract void eat(Food food); } abstract class Food { String name; public Food(String name) { // TODO Auto-generated constructor stub this.name = name; } public String getname() { return name; } } class Dog extends Animal { public Dog(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void eat(Food food) { // TODO Auto-generated method stub System.out.println(this.name + " likes eating: " + food.getname()); } } class Cat extends Animal { public Cat(String name) { super(name); // TODO Auto-generated constructor stub } @Override public void eat(Food food) { // TODO Auto-generated method stub System.out.println(this.name + " likes eating: " + food.getname()); } } class Bone extends Food { public Bone(String name) { super(name); } } class Fish extends Food { public Fish(String name) { super(name); } } class feeder { public void feedanimal(Animal animal, Food food) { animal.eat(food); } } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub feeder f = new feeder(); Animal an = new Dog("Dog"); Animal cat = new Cat("Cat"); Food fo = new Bone("骨头"); Food fi = new Fish("鱼"); f.feedanimal(an, fo); f.feedanimal(cat, fi); } }
程序输出:
Dog likes eating: 骨头 Cat likes eating: 鱼
博客借鉴:https://www.cnblogs.com/summerdata/p/10786767.html