对象转换:
父类名 变量名 = new 子类名(); //隐式转换
父类:Object; 子类:Student
Object o = new Student(); //Object对象是Student的实例
Student d = o; //编译错误注意:子类对象总是父类对象的实例,但父类对象不一定是子类对象的实例。
//此时o实际上是一个Student对象,但是必须显示转换才能编译通过
Student d = (Student) o; //总是可以将一个子类实例转换为父类变量,叫 向上转换;若将父类实例转换为子类对象,必须进行显式转换,叫向下转换。
显式转换:注意!:为使转换成功,必须确保要转换的对象是子类的一个实例。如果父类对象不是子类一个实例,就会出现异常ClassCastException。
使用操作符instanceof实现确保该对象是另一个对象的实例: 变量名 instanceof 类名。
只有源对象是目标类的实例时才能进行类型转换。执行转换前,使用instanceof操作符确保源对象是否是目标类的实例。
警告:对象成员访问符号"."优先于类型转换操作符。 例如:((Circle)object).getarea();
Object o = new Circle();
Circle c = (Circle)o; //此时引用c和引用o指向同一个对象