Java中多态是个很难理解的概念,但同时又是非常重要的概念,Java三大特性(封装、继承、多态)之一,我们从字面上理解,就是一种类型的多种状态,一下通过卖小汽车的例子再次说明什么是多态,其中利用到了接口。
代码实例:
//汽车接口 interface Car{ //要求 接口中有:汽车名称和售价 String getName(); int getPrice(); }
//宝马类 class BMW implements Car{ @Override public String getName() { // TODO Auto-generated method stub //return null; return "宝马"; } @Override public int getPrice() { // TODO Auto-generated method stub //return 0; return 300000; } } //奇瑞QQ class CheryQQ implements Car{ @Override public String getName() { // TODO Auto-generated method stub return "奇瑞QQ"; } @Override public int getPrice() { // TODO Auto-generated method stub return 40000; } }
//汽车出售店 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 class jieKouDemo { public static void main(String[]args){ CarShop shop=new CarShop(); //卖出一辆宝马 shop.sellCar(new BMW()); //卖出一辆奇瑞QQ shop.sellCar(new CheryQQ()); System.out.println("总收入:"+shop.getMoney()); } }
注意事项总结:
继承是多态得以实现的基础。从字面上理解,多态就是一种类型(都是Car类型)表现出来的多种状态(宝马汽车的名称是BMW,售价300000;奇瑞汽车的名称是CheryQQ,售价是40000)。将一个方法调用同这个方法所属的主题(也就是对象或类)关联起来叫做绑定。
绑定分为:前期绑定和后期绑定。
1.前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。比如static方法和final方法。注意,这里也包括private方法,因为他是隐式final的。
2.后期绑定:在运行时根据对象的类型进行绑定。由调用机制实现,因此又叫做动态绑定,或运行时绑定。除了前期绑定之外的所有方法都属于后期绑定。