本帖最后由 张权 于 2012-11-26 14:18 编辑
先看代码:
class A
{
void func1()
{
System.out.println("A func1 is calling");
}
void func2()
{
System.out.println("A func2 is calling");
}
}
class B extends A
{
void func1()
{
System.out.println("B func1 is calling");
}
void func3()
{
System.out.println("B func3 is calling");
}
}
class C
{
//static B b = new B();
public static void main(String[] args)
{
A a = new B();
// B b = (B)a;
B b = new B();
//callB(new B());
//b.func3();
callB(b); //callA(b);
//callA(new B());
}
public static void callA(A a)
{
a.func1();
a.func2();
}
// public static void callB(B b)//这个代码可以正常运行。
// {
// //B b = (B)a;
// b.func1();
// b.func2();
// b.func3();
// }
public static void callB(A a)
{
//B b = (B)a;
b.func1();
b.func2();
b.func3();
}
}
上面代码会报错,找不到变量b,然后再请看,我主函数上面创建了一个静态的对象,如果那样就能运行。这是为什么呢? |