Java 如何实现父类转换为子类的效果?

现有一个类A,有若干方法,这些方法的返回类型都是A对象。现在我想要的效果是:因为A中的属性不能满足我的需求,我想新建一个类B(里面有我需要添加的新属性)来extendsA... 现有一个类A,有若干方法,这些方法的返回类型都是A对象。现在我想要的效果是:
因为A中的属性不能满足我的需求,我想新建一个类B(里面有我需要添加的新属性)来extends A,但是A以及那些方法都不能动,如果使得方法返回的A对象,能够转换为B?
因为Java中 父类不能强制转换为子类
借助于接口能实现不?如果可以,我可以允许改变A 来实现某个接口、。
展开
 我来答
jivam
2013-07-02 · TA获得超过877个赞
知道小有建树答主
回答量:67
采纳率:100%
帮助的人:32.7万
展开全部
"如果使得方法返回的A对象",既然你继承了A方法,那么B也有返回A的方法,在方法里返回B对象,你调用B的这个方法,返回的A对象就可以强转成B了。B b = (B)a
追问
方法里返回的是A对象,这个A对象是在方法里new出来的,我希望尽量不要动这些方法
追答
A里面的方法你可以不动啊,你只要在B里面修改就可以了。如果你new的是一个A,你不可能通过任何方法变成B的。
幽冥神者
2013-07-02 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1790万
展开全部
A instance = new B();

这时候你调用instance的方法,返回的是A的对象,但这个对象是instanceof B的,多态性
这时候需要强制转换。为什么说java中父类不能强制转换为子类,怎么不能转换?
追问
我说错了,您这种方式的确可以上溯,但是方法里返回的A对象,是在方法里new 出来的,我希望尽量不要动这些方法。
追答
明白你意思了,但完全不改代码的话,没法实现这种需求。
你要可扩展的话,一定要改代码,要么用工厂模式设计,要么就仿spring做配置文件,然后反射注入。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星空梦幻无痕
推荐于2017-09-08
知道答主
回答量:18
采纳率:0%
帮助的人:9.8万
展开全部
class A extends B{
}
B b=A a;
好像是这样,父类可以实现对子类中覆写方法的使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love_zh1129
2013-07-02 · 超过47用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:114万
展开全部
你可以反过来
以a为子类、B为父类。。
追问
这样扩展性不够好,以后可能还会出现一个C……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-02
展开全部
class A {
public A am(){
System.out.println("am");
return this;
}
}
class B extends A{
public void bm(){
System.out.println("bm");
}
}

class C {
public void main(){
B b = new B();
B b1 = (B) b.am();
b1.bm();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式