java中强制转换问题.求解

来源:百度知道 编辑:UC知道 时间:2024/05/12 01:34:51
class A {
public void f() {
System.out.println("hello,A");
}
public void k(){
System.out.println("hello k");
}
}

class B extends A {
public void f() {
System.out.println("hello,B");
}
public void h(){
System.out.println("hello h");
}
}

public class TestA {
public static void main(String [] args) {
A a = new A();
B b = (B)a;
//b.f();
a.f();
a.k();
//a.h();
}
}

为什么会报错.父类不能向子类进行强制转换吗?

A a = new B();
B b = (B)a;
这样不会提示错误!
解释一下:
第一句是父类引用指向子类对象,
而第二句把父类a强制转换成子类,
然后赋给子类b,
就不会报错了

而如果在应用中,真的需要父类向子类转换,那么它只具备父类的属性和方法,而子类在此基础之上又具备的方法和属性,站在父类的角度是看不到的!

这样很容易出现问题,
尽量不要这样应用!

A a = new A();
B b = (B)a;
你这是下塑造型,很不安全,也容易出错

A a = new B();
B b = (B)a;
才不报错!

B b=new A();