java基础:多态(0921.2016).
2016-09-21 23:51
176 查看
概念:如把车分为卡车和客车。车为父类,卡车和客车分别为子类。在实例化的时候,新产生一个车的对象。再分别实例化对象卡车和客车分别赋值给车。即多态
例: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
*/
//父类
public class Car {
String model;
int number;
int numberCar;
String action;
}
//子类
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 {
}
(此例运用了多态 super调用 覆盖方法)
例: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调用 覆盖方法)
相关文章推荐
- java基础回顾---封装继承多态
- Java 基础一些代码练习笔记(多态2)
- Day08第八天java基础-----------多态
- java基础--对象转型和多态
- Java基础(七)——面向对象_多态、内部类、其它
- java基础 ---继承和多态
- 黑马程序员 Java基础<二>---> 继承、内部类与多态,包
- JAVA基础学习之多态
- 黑马程序员_java基础3-面向对象(二)多态、异常、包
- Java基础12 类型转换与多态
- Java 基础一些代码练习笔记(继承+接口+多态)
- 黑马程序员-----笔记整理(java基础五-------面向对象--多态)
- Java基础09-抽象类与多态
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
- java基础--多态与包
- Java 基础一些代码练习笔记(多态1)
- 再学 JAVA基础(5)对象转型,多态。【子类对象的实例化过程】
- JAVA基础第八天学习日记_多态
- 黑马程序员---java基础之面向对象(一)三大特征(封装,继承,多态)
- 黑马程序员-(9)Java基础之面向对象(四)多态