第2节 塑型
推荐给好友
打印
加入收藏
更新于2009-05-10 13:45:42

7.2 塑型

塑型(type-casting)
又称为类型转换

方式

隐式(自动)的类型转换
显式(强制)的类型转换

7.2.1 塑型的概念

塑型的对象
引用变量
将对象暂时当成更一般的对象来对待,并不改变其类型
只能被塑型为
任何一个父类类型
对象所属的类实现的一个接口
被塑型为父类或接口后,再被塑型回其本身所在的类

7.2.1 塑型的概念——一个例子

Manager对象
可以被塑型为Employee、Person、Object或Insurable,
不能被塑型为Customer、Company或Car




7.2.1 塑型的概念——隐式(自动)的类型转换

引用变量
被塑型成更一般的类
Employee emp;
emp = new Manager();
Car jetta = new Car();
Insurable item = jetta;

7.2.1 塑型的概念——显式(强制)的类型转换

引用变量:还原为本来的类型
Employee emp;
Manager man;
emp = new Manager();
man = (Manager)emp; //将emp强制塑型为本来的类型

7.2.2 塑型的应用

当一个类对象被塑型为其父类后,它提供的方法会减少
当Manager对象被塑型为Employee之后,它只能接收getName()及getEmployeeNumber()方法,不能接收getSalary()方法
将其塑型为本来的类型后,又能接收getSalary()方法了




7.2.3 方法的查找

如果在塑型前和塑型后的类中都提供了相同的方法,如果将此方法发送给塑型后的对象,那么系统将会调用哪一个类中的方法?
实例方法
类方法

7.2.3 方法的查找——实例方法



Manager?? man = new Manager();
Employee? emp1 = new Employee();
Employee? emp2 = (Employee)man;
emp1.computePay(); // 调用Employee类中的computePay()方法
man.computePay();? // 调用Manager类中的computePay()方法
emp2.computePay(); // 调用Manager类中的computePay()方法

7.2.3 方法的查找——类方法

总是在变量声明时所属的类中进行查找 9

Manager man = new Manager();
Employee emp1 = new Employee();
Employee emp2 = (Employee)man;
man.expenseAllowance(); //in Manager
emp1.expenseAllowance(); //in Employee
emp2.expenseAllowance(); //in Employee!!!


上一节          下一节
相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.