class Demo2
{
public static void main(String[] args)
{
B b = new B();
b.fun1();
A a = b;
a.fun1();
}
}
class A
{
void fun1()
{
System.out.println(fun2());
}
int fun2()
{
return 123;
}
}
class B extends A
{
int fun2()
{
return 456;
}
}
结果是什么?作者: 杨强 时间: 2011-12-9 16:28
结果是 456
456作者: 杨强 时间: 2011-12-9 16:30
B b = new B(); //建立一个子类的对象b
b.fun1();//b调用了父类中的fun1();因为子类中没有 fun1();中调用了fun2();子类中有 所以优先子类中的 输出456
A a = b; //把对象b 赋给 a
a.fun1();//相当于还是b调用的fun1(); 同上了 作者: 方书堂 时间: 2011-12-9 16:45
结果都会是456啊
因为B b = new B(); //是建立了子类对象
b.fun1因为子类继承父类fun2()会被子类的所复写,所以输出的会是456
A a=b//这个是把对象b赋给了a,这个就是对象的多态性。
所以他b中的功能赋给了a,所以输出来的会是456