JAVA多态

饲养员Feeder 食物Food和动物Animal及它的子类的类框图

可以把Feeder Animal 和Food都看成独立的子系统

Feeder类定义:

public class Feeder{
    public void feed{Aniaal animal.Food food}{
    animal.eat(food);
    }
}

演示了一个饲养员分别给一只狗喂狗骨头 给一只猫喂鱼

Feeder feeder=new Feeder();
Animal animal=new Dog();
Food food=new Bone();
feeder.feed(animal.food);//给狗喂肉骨头
animal=new Cat();
food=new Fish();
feeder.feed(animal.food);//给猫喂鱼

以上animal变量被定义为Animal类型 但实际上有可能引用Dog或Cat的实例
在Feeder类的feed()方法中掉用animal.eat()方法 一会变成猫一会变成狗这

个是多态的字面含义

  Java语言允许某个类型的引用变量引用子类的实例 而且可以对这个引用变量进行数据转换

Animal animal=new Dog();
Dog dog=(Dog)animal;
Creature creature=animal;


类型转换

在Sub类中海定义了实例变量subVar和subMethod()

原文地址:https://www.cnblogs.com/wdas-87895/p/5964920.html