父类强制转换为子类,子类为何编译通过,运行失败?
代码如下:
lesson04b.java
class A
{
public void func1()
{
System.out.println("A.func1");
}
public void func2()
{
System.out.println("A.func2");
func1();
}
}
class B extends A
{
public void func1()
{
System.out.println("B.func1");
}
public void func3()
{
System.out.println("B.func3");
}
}
class C
{
public static void main(String[] args)
{
System.out.println("强制类型转换A->B后的调用效果:");
A a = new A();
B b = (B)a;
b.func1();
}
}
编译javac lesson04b.java通过,
运行java C时出错:
强制类型转换A->B后的调用效果:
Exception in thread "main" java.lang.ClassCastException: A
at C.main(test.java:31)
请问,这段代码是否有误,应该怎样做才能使子类正常工作?