java中的多态机制

多态很好的实现了程序的扩展性而不用每次都做判断;
多态是在程序运行过程中(不是在编译阶段),动态的判断对象引用实际所指对象类型来调用相应的方法
多态的三个要点:1.继承
2.重写

3.父类引用指向子类对象

测试代码:

class Animal{
	public String name;
	Animal(String name){
		this.name = name;
	}
	
	public void enjoy(){
		System.out.println("叫声......");
	}
	
	//abstract public void enjoy(){}含抽象方法的类必须声明为抽象类abstract class
}

class Cat extends Animal{
	public String eyesColor;
	Cat(String name, String eyesColor){
		super(name);this.eyesColor = eyesColor;
	}
	
	public void enjoy(){
		System.out.println("猫叫声......");
	}
}

class Dog extends Animal{
	public String furColor;
	Dog(String name, String furColor){
		super(name);this.furColor = furColor; 
	}
	
	public void enjoy(){
		System.out.println("狗叫声......");
	}
}

/*class Bird extends Animal{
	private String featherColor;
	Bird(String name, String featherColor){
		super(name);this.featherColor = featherColor;
	}
	
	public void enjoy(){
		System.out.println("鸟叫声......");
	}
}
*/

class Lady{
	private String name;
	private Animal pet;
	Lady(String name, Animal pet){
		this.name = name; this.pet = pet;
	}
	
	public void myPetEnjoy(){
		pet.enjoy();
	}
}

public class TestPolymoph{
	public static void main(String args[]){
		Cat c = new Cat("catname","blue");
		Dog d = new Dog("dogname","yellow");
		//Bird b = new Bird("birdname","black");
		Lady l1 = new Lady("l1",c);
		Lady l2 = new Lady("l2",d);
		//Lady l3 = new Lady("l3",b);
		l1.myPetEnjoy();
		l2.myPetEnjoy();
		//l3.myPetEnjoy();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值