不积跬步,无以至千里;不积小流,无以成江海。

 

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

posted on 2020-04-06 17:49  smile学子  阅读(181)  评论(0编辑  收藏  举报