一、塑形概念
——类型转换
二、类型转换规则
1.基本类型之间的转换:将值从一种类型转换成另一种类型
2.引用变量的类型转换: 将引用转换为另一类型的引用,并不改变对象本身的类型。
—— 只能转换为: ① 任何一个(直接或间接)超类的类型(向上转型);
② 对象所属的类(或其超类)实现的一个接口(向上转型);
③被转为引用指向的对象的类型(唯一可以向下转型的情况)
3.当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声明过的方法
三、类型转换方式
——隐式(自动)的类型转换
——基本数据类型
相容类型之间存储容量低的自动向存储容量高的类型转换
——引用变量(向上转换)
①子类的引用转换为超类的引用
Employee emp;
emp = new Manager(); //将Manager类型的对象直接赋给
//Employee类的引用变量,系统会
//自动将Manage对象塑型为Employee类
②被塑型为对象所属类实现的接口类型
Car jetta = new Car();
Insurable item = jetta;
1.基本数据类型: (int)87.213; (char)65;
2.引用变量:还原为本来的类型
Employee emp;Manager man;
emp =new Manager(); //隐式转换
man=(Manager)emp;//将emp显示转换为它指向的对象类型
四、塑型应用的场合包括
——赋值转换
赋值号右边的表达式类型或对象转换为左边的类型
——方法调用转换
实参的类型转换为形参的类型
——算数表达式转换
算数混合运算时,不同类型的项转换为相同的类型再进行运算
——字符串转换
字符串连接运算时,如果一个操作数为字符串,一个操作数为数值型,则会自动将数值型转换为字符串
塑形后通过引用进行方法的查找
如果在塑型前和塑型后的类中都提供了相同的方法,如果将此方法发送给塑型后的对象,那么系统将会调用哪一个类中的方法?而类中的方法分为实例方法和类方法,这两种方法查找又一不一样呢?
——实例方法的查找
从对象创建时的类开始,沿类层次向上查找
Manager man = new Manager();
Employee emp1 = new Employee();
Employee emp2 = (Employee)man;
emp1.computePay(); // 调用Employee类中的computePay()方法
man.computePay(); // 调用Manager类中的computePay()方法
emp2.computePay(); // 调用Manager类中的computePay()方法
——类方法的查找
总是在引用变量声明时所属的类中进行查找
Manager man = new Manager();
Employee emp1 = new Employee();
Employee emp2 = (Employee)man;
man.expenseAllowance(); //in Manager
emp1.expenseAllowance(); //in Employee
emp2.expenseAllowance(); //in Employee!!!