关于多态的理解

package com.sdjt.study.extend;

/**
 * @author:lyy
 * @version 创建时间:2009-8-4 下午07:18:37 类说明
 */
// 汽车接口
interface Car {
	// 汽车名称
	String getName();

	// 获得汽车售价
	int getPrice();
}

// 宝马
class BMW implements Car {
	public String getName() {
		return "BMW";
	}

	public int getPrice() {
		return 300000;
	}
}

// 奇瑞QQ
class CheryQQ implements Car {
	public String getName() {
		return "CheryQQ";
	}

	public int getPrice() {
		return 20000;
	}
}

// 汽车出售店
public class CarShop {
	// 售车收入
	private int money = 0;

	// 卖出一部车
	public void sellCar(Car car) {
		System.out.println("车型:" + car.getName() + " 单价:" + car.getPrice());
		// 增加卖出车售价的收入
		money += car.getPrice();
	}

	// 售车总收入
	public int getMoney() {
		return money;
	}

	public static void main(String[] args) {
		CarShop aShop = new CarShop();
		// 卖出一辆宝马
		aShop.sellCar(new BMW());
		// 卖出一辆奇瑞QQ
		aShop.sellCar(new CheryQQ());
		System.out.println("总收入:" + aShop.getMoney());
	}
}

 将一个方法调用同这个方法所属的主体(也就是对象或类)关联起来叫做绑
定,分前期绑定和后期绑定两种。下面解释一下它们的定义:
1. 前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。比如static方法和final方法,注意,这里也包括private方法,因为它是隐式final的。
2. 后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或者运行时绑定。除了前期绑定外的所有方法都属于后期绑定。多态就是在后期绑定这种机制上实现的。多态给我们带来的好处是消除了类之间的耦合关系,使程序更容易扩展。

比如在上例中,新增加一种类型汽车的销售,只需要让新定义的类继承Car类并实现它的所有方法,而无需对原有代码做任何修改,CarShop类的sellCar(Car car)方法就可以处理新的车型了。新增代码如下:

// 桑塔纳汽车
class Santana implements Car {
public String getName() {
return "Santana";
}
public int getPrice() {
return 80000;
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值