慕瓜7080925
2016-07-20 17:30
public class Demo {
public static void main(String[] args){
Master ma = new Master();
ma.feed(new Animal(), new Food());
ma.feed(new Cat(), new Bone());
ma.feed(new Dog(), new Fish());
}
}
class Animal{
public void eat(Food f){
System.out.println("我是一个小动物,正在吃" + f.getFood());
}
}
class Cat extends Animal{
public void eat(Food f){
System.out.println("我是一只小猫咪,正在吃" + f.getFood());
}
}
class Dog extends Animal{
public void eat(Food f){
System.out.println("我是一只狗狗,正在吃" + f.getFood());
}
}
class Food{
public String getFood(){
return "事物";
}
}
class Fish extends Food{
public String getFood(){
return "鱼";
}
}
class Bone extends Food{
public String getFood(){
return "骨头";
}
}
class Master{
public void feed(Animal an, Food f){
an.eat(f);
}
}
Cat,Dog继承于Animal,可以使用Animal类型的变量来引用Cat和Dog的对象,Food类似。以ma.feed(new Cat(), new Bone());为例,feed(Animal an, Food f),an是Animal类型的变量,引用了Cat的对象,即可以使用Cat对象中所有从Animal继承的方法,而an实际引用的是Cat而不是Animal,所以调用方法时调用的就是Cat中的方法。Food的情况类似。
有谁能解释一下怎么实现的
Java入门第二季 升级版
530553 学习 · 6091 问题
相似问题