如何把父类转换成子类?

tanxd39 2007-10-04 12:56:10
JAVA中父类是不能强行转换成子类的,这个我清楚?但是最近在做一个项目时,遇到这种情况,我需要把父类的对象强行转换成子类的?请问各位大侠有什么好的解决办法没?
假如下面的例子:
Class A{}
Class B extends A{
private String name;
void setName(String n){...};
String getName(){...};
}
public class C
{
public static void main(String[] args)
{
System.out.println("强制类型转换A->B后的调用效果:");
A a = new A();
B b = B(a); //编译通过,但是运行出错
b.setName("test");
System.out.println(b.getName());
}

我的目的就是达到上面理想状态中的效果.
}
...全文
1063 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuxinlee 2010-02-25
  • 打赏
  • 举报
回复
可以加扩展方法啊....

参考:http://tech.ddvip.com/2008-01/119955698139982.html
tanxd39 2007-10-04
  • 打赏
  • 举报
回复
发表于:2007-10-04 16:14:4411楼 得分:0
原来的A不是我设计和编写的,但是现在的需求需要加个属性,所以只好重写个B继承A了(不能动A).什么意思?那就用B好了

意思是给A加个属性,但是不能在动A的代码.
jasonnju 2007-10-04
  • 打赏
  • 举报
回复
原来的A不是我设计和编写的,但是现在的需求需要加个属性,所以只好重写个B继承A了(不能动A).什么意思?那就用B好了
weizj593 2007-10-04
  • 打赏
  • 举报
回复
原来A就没有这样一个空间,
A都成形了,再加属性可能性不大,
建议换个思路吧...
tanxd39 2007-10-04
  • 打赏
  • 举报
回复
我也想这样啊,不过没办法.原来的A不是我设计和编写的,但是现在的需求需要加个属性,所以只好重写个B继承A了(不能动A).其实笨办法倒是能实现我的想法的,但是我想求教有没什么简单的办法,呵呵!
i5land 2007-10-04
  • 打赏
  • 举报
回复
没有办法了吧.
你为什么不直接new B();然后加属性呢?
tanxd39 2007-10-04
  • 打赏
  • 举报
回复
谢谢各位,A a = new b() 这样是没问题的,但是我现在假设都已经通过A a = new A() 得到了对象a了,现在只是想给它加个属性name,所以我的想法是写个B类继承A,然后把a强制转换成B类型,我的思路是这样的.但行不通,看各位还有什么高招不?一定记住,已经得到了父类的对象,而且不想改关于父类的任何东西.
xiyuan1999 2007-10-04
  • 打赏
  • 举报
回复
A a = new B();

父类引用指向子类对象
xiyuan1999 2007-10-04
  • 打赏
  • 举报
回复
用多态实现啊


issgates 2007-10-04
  • 打赏
  • 举报
回复
此处借鉴的面向接口的思想, A a = new b();
shan1119 2007-10-04
  • 打赏
  • 举报
回复
A   a   =   new   b(); 

顶一个
i5land 2007-10-04
  • 打赏
  • 举报
回复
父类的实例必须是由子类的实例上溯造型的
所以把 A a = new A();
换成A a = new B();
i5land 2007-10-04
  • 打赏
  • 举报
回复
A a = new b();
这样就可以了

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧