黑马程序员技术交流社区

标题: 黑马基础测试题 [打印本页]

作者: 史世锋    时间: 2015-9-6 21:31
标题: 黑马基础测试题
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”
        }
}
作者: 残影    时间: 2015-9-6 22:58
顶。。。
作者: 徐鹏辰    时间: 2015-9-6 23:13
挺详细的,赞!!
作者: 头撞豆腐    时间: 2015-9-7 00:30
谢谢。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2