class A {}
class B {}
class B extends A {}
public class Text {
public static void main(String []args) {
B b = new A(); //为什么出错
B b = (B) A(); //为什么运行出异常
A a = new B();
B b1 = a; //这句怎么又可以了呢,有点晕. 这两种写法到底哪个是向下转型.
}
}
class B {}
class B extends A {}
public class Text {
public static void main(String []args) {
B b = new A(); //为什么出错
B b = (B) A(); //为什么运行出异常
A a = new B();
B b1 = a; //这句怎么又可以了呢,有点晕. 这两种写法到底哪个是向下转型.
}
}
解决方案 »
- Java为何使用 catch Exception e 无法捕获NullPointerException
- 求助:为什么最后一条记录会读两次?
- 方法中居然不能创建内部类对象??
- 参数传递,值传递弄得我一头雾水,大哥大姐们帮我讲讲吧。。
- 遇见一个比较奇怪的问题,大家帮忙看看
- [讨论]c++能做的java也能做这样说正确吗?
- JAVA飞机游戏设计 现在都没有头绪呢~~~~~~~~~~~~~~~~~~~````````
- 打印~~~~如何打印ie页面中的图像和文本的混合体(ie本身的打印功能不可以)
- 学习java一段时间,却不知道该继续学习什么了,郁闷中。。。。
- Java内存疑问
- 在相应的 try 语句主体中不能抛出异常的问题
- JAVA焦点的问题
B b = (B) A(); //为什么运行出异常
问题在于你的子类引用指向了父类对象,肯定不对啊楼主想向下类型转换
首先A a = new B(); 让父类引用指向子类对象
然后B b1 = (B)a;将a强制转换为B类型,也就是向下类型转换了,由父类转为子类追加的问题,因为所有的异常都是Exception的子类,所以你说的没错都会接受,是向上类型转换