当前位置: 代码迷 >> Java相关 >> 感冒了的程序.输不出结果--why
  详细解决方案

感冒了的程序.输不出结果--why

热度:114   发布时间:2006-03-01 22:56:00.0
感冒了的程序.输不出结果--why

package test;
class A{
int c=1;
void text(){System.out.println("A");}
}
class B extends A{
public B(){c=2;}
void text(){System.out.println("B");}
}
public class ExtendsText {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
A a;
B b;
a =new A();
b=(B)a;//--------------------------------------------->这句有问题吗?输不出结果!
a.text();
b.text();
System.out.println(b.c);
System.out.println(a.c);

}

}

搜索更多相关的解决方案: 感冒  why  结果  

----------------解决方案--------------------------------------------------------
b=(B)a;//--------------------------------------------->这句有问题吗?输不出结果!
看不懂什么意思
能讲讲吗?
----------------解决方案--------------------------------------------------------
就是说,能编译,但是不能输出结果,不知道为什么!问题就出现在那一句!
----------------解决方案--------------------------------------------------------
b=(B)a;//--------------------------------------------->这句有问题吗?输不出结果!
就是这一句,强制转换的问题,注意基类和子类的关系,子类可以强制转为基类,可是基类无法强制转换为子类
----------------解决方案--------------------------------------------------------
写的这么乱.
----------------解决方案--------------------------------------------------------

程序代码:

class A{
int c=1;
void text(){
System.out.println(\"A\");
}
}
class B extends A{
public B(){
c=2;
}
void text(){
System.out.println(\"B\");
}
}
public class ExtendsText {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
A a;
A b;
a =new A();
b=new B();
a.text();
b.text();
System.out.println(b.c);
System.out.println(a.c);
}
}



类型不匹配……发生错误


----------------解决方案--------------------------------------------------------
运行时错误,当然输不出结果啦
在用类的时候,尽量不要乱互相转化,这样在编译的时候可能没有问题
但是运行的时候就会莫名其妙的出问题,并且还找不到问题在哪里
----------------解决方案--------------------------------------------------------
  相关解决方案