黑马程序员技术交流社区

标题: 怎么样才能将一个父类对象转换成一个子类对象? [打印本页]

作者: 罗宝    时间: 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
  1. package com.Lland.test;

  2. public class A {
  3.         public void print(){
  4.                 System.out.println("this is A");
  5.         }
  6. }

  7. public class B extends A {
  8.         public void print(){
  9.                 System.out.println("this is B");
  10.         }
  11. }

  12. public class MainClass {
  13.         public static void main(String[] args) {
  14.                 A a = new B();
  15.                 B b1 = (B)a;
  16.                 //B b2 = (B)new A();
  17.                 a.print();
  18.                 b1.print();
  19.                 //b2.print();
  20.         }
  21. }
复制代码
看上面的代码
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