Java多态的应用

多态的好处:

使得程序员编写代码更灵活

多态的应用:

(1)多态数组

数组的元素是父类的类型,实际存储的是子类的对象。

用这样的数组,就可以统一管理,所有子类的对象

(2)多态参数:

形参是父类的类型,实参是子类的对象

应用一:

public class TestUse1 {
	public static void main(String[] args) {
		/*
		 * 创建一个数组,可以存储各种图形的我对象,
		 * 包括圆对象,矩形对象,三角对象...
		 * 
		 */
		//Circle [] yuans = new Circle[3;//这个数组存圆
		//Rectangle[] jus = new Rectangle[3];
		Graphic[] all = new Graphic[3];
		//左边的元素arr[0]是Graphic类型
		all[0] = new Circle(1.2);
		//左边的g2是Graphic,右边的是矩形对象
		Graphic g2 = new Rectangle(2, 4);
		all[1] = g2;
		all[2] = new Circle(4.2);
		//遍历所有图形的面积
		for(int i = 0;i < all.length;i++) {
			//执行哪个getArea方法,要看all[i]中存储的是哪个子类的对象
			System.out.println("面积:" + all[i].getArea());
		}
	}
}
class Graphic {
	public double getArea() {
		return 0.0;
	}
}
class Circle extends Graphic {
	private double radius;
	public Circle(double radius) {
		this.radius = radius;
	}
	//重写
	public double getArea() {
		return 3.14 * radius * radius;
	}
}
class Rectangle extends Graphic {
	private double length;
	private double width;
	public Rectangle(double length, double width) {
		super();
		this.length = length;
		this.width = width;
	}
	public double getArea() {
		return length * width;
	}
}

应用二:

public class TestUse2 {
	//这个方法,能够检查所有的动物吃东西时否正常
	//没有多态的话,需要重载很多个
	/*
	 * public static void check(Dog dog){
	 * 		dog.eat();
	 * }
	 * public static void check(Cat cat){
	 * 		cat.eat();
	 * }
	 */
	public static void check(Animal a) {
		a.eat();
	}
	public static void main(String[] args) {
		//匿名对象
		check(new Dog());//隐含了,形参Animal a = 实参 new Dog()
		check(new Cat());//隐含了,形参Animal a = 实参 new Cat()
		Dog d = new Dog();
		check(d);//有名对象
	}

}
class Animal {
	public void eat() {
		System.out.println("吃东西");
	}
}
class Dog extends Animal {
	public void eat() {
		System.out.println("啃骨头");
	}
}
class Cat extends Animal{
	public void eat() {
		System.out.println("吃鱼");
	}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值