A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗宝 于 2012-11-10 00:02 编辑

怎么样才能将一个父类对象转换成一个子类对象?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

7 个回复

倒序浏览
我也不知道
,在线等答案
回复 使用道具 举报
要转换的对象前加个括号(子类类型)  如 (Student)Obj 将obj强制转换成Student
回复 使用道具 举报
强制类型转换。如 public void meth(A a)
      {   
         B b = (B)a;  
     }   
但是,请确保a确实是B的实例否则会抛出异常!
回复 使用道具 举报
  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;
用父类来实列来接收子类的实列  然后能强转回子类去

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张利 于 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

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
舒远 黑马帝 2012-11-10 12:07:48
7#
Father f = new Son();
if(f instanceof Son){//最好加上这个判断。更加安全
    Son son = (Son)f;
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
张综 中级黑马 2012-11-11 21:21:32
8#
强制类型转换啊 。比如说
Animal ani=(Animal)new Cat();//括号里可以不写。
Cat cat =(Cat)ani//括号里必须写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马