java父类对象给子类对象赋值强制转换后子类对象的属性是怎么一回事

classa{Stringa="a";}classbextendsa{Stringb="b";}classc{aa1,a2=newa();bb1.b2=newb();b1... class a{
String a="a";}
class b extends a {
String b="b";}
class c{
a a1, a2=new a();
b b1.b2=new b();
b1=(b)a2;
System.out.println(b1.b);
为什么无法输出呢??
展开
 我来答
匿名用户
2013-10-21
展开全部
代码要写在代码块、方法里面。
class c{
public static void main(String args[]){
a a1, a2=new a();
b b1.b2=new b();
b1=(b)a2;
System.out.println(b1.b);
}
}

但还不能用的,因为

b1=(b)a2; /// a2本来是a的实例,转换失败。
追问
我知道不能转换。。可是为什么呢??子类对象不是能给父类对象赋值么?
追答
你这个案例,体现不了你说的要求。
class A{
String a="a";
}
class AA extends A {
String aa="aa";
}

public class TestAA{
public static void main(String args[]){
AA b=new AA(); //子类的实例
b.a="a from AA"; //这里设置值,a 是父类的属性。
System.out.println(b.a);
System.out.println(b.aa);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
席翊君7d
2013-10-21 · TA获得超过629个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:160万
展开全部
实例化的对象要写在主函数中才能输出,不然你这个方法要通过主函数调用才能执行。java的运行机制,都是先找到main方法,然后在执行main方法中的调用,你可以写个main方法,然后多写几个方法,其中一个方法进行调用,一个方法不进行调用就可以知道,只有经过main方法调用的方法才会执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
占于培16
2013-10-21 · 超过23用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:41.9万
展开全部
么看懂你想问什么
追问
呃。。。就是这个程序为什么无法输出b1.b??谢谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式