package com.itheima;
/*
* 第7题:分析运行结果,说明原理。(没有分析结果不得分)
*
* ---分析及结果见程序中注释。
* */
class A
{
void fun1()
{
System.out.println(fun2());
}
int fun2()
{
return 123;
}
}
public class B extends A
{
int fun2()
{
return 456;
}
public static void main(String args[])
{
B b = new B();
b.fun1(); //B类为A类的子类,继承了A类的fun1()方法,并复写了A类的fun2()方法
//b为B类的实例对象,b调用B类fun1()方法,fun1()方法又调用B类的fun2()方法,故输出“456”
A a = b; //A a = b,父类变量指向子类实例对象,此为多态
a.fun1(); //a.fun1(),在编译时期,编译器会检查A类中是否有fun1()方法,如果没有,则编译不会通过
//a虽然是A类引用变量,但指向的却是B类的实例对象b,所以在运行时
//仍然是调用的B类fun1()、fun2()方法,故输出“456”。最终结果为“456456”
}
} |
|