黑马程序员技术交流社区
标题: 怎么样才能将一个父类对象转换成一个子类对象? [打印本页]
作者: 罗宝 时间: 2012-11-9 21:47
标题: 怎么样才能将一个父类对象转换成一个子类对象?
本帖最后由 罗宝 于 2012-11-10 00:02 编辑
怎么样才能将一个父类对象转换成一个子类对象?
作者: 陈进 时间: 2012-11-9 21:52
我也不知道
,在线等答案
作者: 王永荣 时间: 2012-11-9 22:39
要转换的对象前加个括号(子类类型) 如 (Student)Obj 将obj强制转换成Student
作者: 许坤 时间: 2012-11-9 22:42
强制类型转换。如 public void meth(A a)
{
B b = (B)a;
}
但是,请确保a确实是B的实例否则会抛出异常!
作者: 廖力 时间: 2012-11-9 22:43
- package com.Lland.test;
- public class A {
- public void print(){
- System.out.println("this is A");
- }
- }
- public class B extends A {
- public void print(){
- System.out.println("this is B");
- }
- }
- public class MainClass {
- public static void main(String[] args) {
- A a = new B();
- B b1 = (B)a;
- //B b2 = (B)new A();
- a.print();
- b1.print();
- //b2.print();
- }
- }
复制代码 看上面的代码
A类是B类的的父类 B类是A类的子类
B类是能自动转到A类的
A a = new B();这句没有错
但是A类是不能向子类转换
B b2 = (B)new A();这句会抛出java.lang.ClassCastException的异常
有一种情况除外
A a = new B();
B b1 = (B)a;
用父类来实列来接收子类的实列 然后能强转回子类去
作者: 张利 时间: 2012-11-9 23:07
本帖最后由 张利 于 2012-11-9 23:13 编辑
父类类型转换成子类类型是向下转换 ,需要强制转换
不出错的向下转型,必然是以向上转型为前提
Object o = new Student();//上向转型
Student s = o;//向下转型,出错,因为需要强制转换
Student s = (Student)o;//向下转型,没有问题了。
Object o = new ShiTou();
Money m = (Money)o;//这里编译时不会有问题,但在运行时这里就出现了一个异常。ClassCastException
作者: 舒远 时间: 2012-11-10 12:07
Father f = new Son();
if(f instanceof Son){//最好加上这个判断。更加安全
Son son = (Son)f;
}
作者: 张综 时间: 2012-11-11 21:21
强制类型转换啊 。比如说
Animal ani=(Animal)new Cat();//括号里可以不写。
Cat cat =(Cat)ani//括号里必须写
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |