程序如下:
class A
{
void func1()
{
System.out.println("A func1 is calling");
}
}
class B extends A
{
void func1()
{
System.out.println("B fun1 is calling");
}
}
class c
{
public static void main(String[] args)
{
A a=new A();
B b=(B)a;
b.func1();
}
}
编译能够通过,但执行会出错。主要是那个类的强制转换。是不是不应该这么用?假如是的话那应该怎么使用?
谢谢......
class A
{
void func1()
{
System.out.println("A func1 is calling");
}
}
class B extends A
{
void func1()
{
System.out.println("B fun1 is calling");
}
}
class c
{
public static void main(String[] args)
{
A a=new A();
B b=(B)a;
b.func1();
}
}
编译能够通过,但执行会出错。主要是那个类的强制转换。是不是不应该这么用?假如是的话那应该怎么使用?
谢谢......
你的C类写错了
main方法必须在public类中
class A
{
void func1()
{
System.out.println("A func1 is calling");
}
} class B extends A
{
void func1()
{
System.out.println("B fun1 is calling");
}
} public class c
{
public static void main(String[] args)
{
A a=new B();
a.func1();
//B b=(B)a;
//b.func1();
}
}
Exception in thread "main" java.lang.ClassCastException:A cannot be cast to B at c.main(c.java:20)五楼兄台那么改是可以啦
不过那个 A a=new B(); 应该是把B类对象赋给了a吧? 它跟B b=(B)a;这个强制转换有关系吗?
是不是要把父类强制转换成子类必须得先把子类对象赋给父类啊??
晕死小弟啦......
类public class c
这种说法是错误的
如果有main方法,文件名必须为类名.java
如果有public类,文件名必须为public类类名.java(一个.java源文件有且只能有一个public类)
现在 A a = new A();说明创建的对象是A,A是B的超类,不能向B转换。
我想你的意图可能是:B b = new B();
A a = (A)b;
a.func1();用来理解多态的。