对象类型转换(Casting)
一、基本数据类型的Casting
1、自动类型转换
小的数据类型可以自动转换成大的数据类型。如:
- long g = 20;
- double d = 12.0f
2、强制类型转换
可以把大的数据类型强制转换(casting)成小的数据类型。如:
- float f = (float)12.0;
- int a = (int)1200L;
二、对java对象的强制类型转换称为造型
- 从子类到父类的类型转换可以自动进行
- 从父类到子类的类型转换必须通过造型(强制类型转换)实现
- 无继承关系的引用类型间的转换是非法的
三、对象类型转换举例
//Person.java
public class Person{
public void test(){
System.out.println("这是person的test方法");
}
}
//Student.java
public class Student extends Person{
public void getSchool(){
System.out.println("这是Student的getSchool方法");
}
}
//Test.java
public class Test{
public static void main(String[] args){
Test t = new Test();
t.method(new Person());//输出:这是Person类的test方法
t.method(new Student());//输出:这是student类的getSchool方法
}
public void method(Person e){
if(e instanceof Student){
Student s = (Student) e;
s.getSchool();
}else{
e.test();
}
}
}