java基础:多态(0921.2016).

来源:互联网 发布:华为数据卡槽不能换 编辑:程序博客网 时间:2024/06/05 07:47

概念:如把车分为卡车和客车。车为父类,卡车和客车分别为子类。在实例化的时候,新产生一个车的对象。再分别实例化对象卡车和客车分别赋值给车。即多态
例:Car car = new Car();// 父类变量car引用父类实例 , car指向Car 类的实例
car = new passengerCar(); //父类变量car引用子类的实例 ,car指向 passengerCar 类的实例(对象)
car = new TruckCar();//父类变量car引用子类的实例 ,car指向TruckCar 类的实例(对象)
car是车类,passengerCar(卡车)是卡车。car是车类,也可以是卡车。它有不同的表现形式,即多态。(人也可以是人类,也可以是教师。)

再比如“宠物”,也有很多不同的表达或实现,它可以是小猫、小狗、蜥蜴等,我们到宠物店说“请给我一只宠物”,服务员给我们小猫、小狗或者蜥蜴都可以,我们就说“宠物”具备了多态性。

多态是指一个事物有不同的表现形式或形态。

多态存在的三个必要条件:要有继承、要有重写、父类变量引用子类对象。

当使用多态方式调用方法时:
首先检查父类中是否有该方法,如果没有,则编译错误;如果有,则检查子类是否覆盖了该方法。如果子类覆盖了该方法,就调用子类的方法,否则调用父类方法

/**
* 新华租车系统.
类型 功能 属性
卡车 载货 载重量, 车辆数 , 租车费用
客车 载人 载人量 ,车辆数, 租车费用

要求:查看所有车型信息,
车型 功能 载人/货量 车辆数
客车 载人 5 20
卡车 载货 6 5

                      车(car)          卡车(truckCar)      客车(passengerCar)

*/
//父类
public class Car {
String model;
int number;
int numberCar;
String action;

void message(){    System.out.println("显示所有车型信息:");    System.out.println("车型"+"\t"+"功能"+"\t"+"载人/载货"+"\t"+"车辆数");}

}
//子类
public class passengerCar extends Car {
void message(){//覆盖方法
super.message();//调用父类方法
System.out.println(model+”\t”+action+”\t”+number+”\t”+numberCar);
}
}

public class TruckCar extends Car{
void message(){//覆盖方法
System.out.println(model+”\t”+action+”\t”+number+”\t”+numberCar);
}
}

public class Cartest {

public static void main(String[] args) {    Car passenger = new passengerCar();w    passenger.model="卡车";    passenger.action="载货";    passenger.number=6;    passenger.numberCar=5;    passenger.message();    passenger = new TruckCar();    passenger.model="客车";    passenger.action="载人";    passenger.number=5;    passenger.numberCar=20;    passenger.message();}

}
(此例运用了多态 super调用 覆盖方法)

0 0
原创粉丝点击