/**
* 多态
* 情景:
* 动物:吃、睡觉
* 猪:
* 马:奔跑
* @author mykay
*
*/
abstract class Animals{
abstract void ect(); //吃
abstract void sleep();//睡觉
}
class Pigs extends Animals{
void ect(){
System.out.println("猪 吃粮食");
}
void sleep(){
System.out.println("猪 趴着睡觉");
}
}
class Horses extends Animals {
void ect(){
System.out.println("马 吃草");
}
void sleep(){
System.out.println("马 站着睡觉");
}
void running(){
System.out.println("马 奔跑");
}
}
public class PolymorphicDemo {
public static void main(String[] args) {
Animals a = new Horses();//接收类型是动物类型,类型提升
a.ect();//调用Horses类中ect()方法。
Horses hs = (Horses)a; //向下转型
hs.running();
System.out.println("------fonction方法------");
Pigs p = new Pigs();
Horses h = new Horses();
fonction(a);
fonction(p);
fonction(h);
}
static void fonction(Animals a){
a.ect();
a.sleep();
System.out.println();
}
}
/**
* 总结:
* 1.多态:父类、抽象类、接口引用其子类的类型使用。例如:fonction()方法。
* 2.父类中定义,子类可以直接使用。可以接受多个子类继承类型的对象。
* 3.多态中子类要覆盖其父类成员函数。
* 4.子类对象指向父类时,要访问子类特有内容时,父类可以向下转型。
* 例如:父类 f = new 子类(); 子类 z = (子类)f; z.fonction();
* 5.向上转型是父类接收,向下转型是使用子类特有方法。
*/
运行结果:
马 吃草
马 奔跑
------fonction方法------
马 吃草
马 站着睡觉
猪 吃粮食
猪 趴着睡觉
马 吃草
马 站着睡觉
以上权当个人看法,如有问题,请您联系。