Java基础--多态使用(一)

/**
 * 多态
 * 情景:
 * 动物:吃、睡觉
 * 猪:
 * 马:奔跑
 * @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方法------
马  吃草
马  站着睡觉

猪  吃粮食
猪  趴着睡觉

马  吃草
马  站着睡觉
以上权当个人看法,如有问题,请您联系。

猜你喜欢

转载自blog.csdn.net/u013251413/article/details/80610236