黑马程序员技术交流社区

标题: 简单的多态案例 [打印本页]

作者: 悠悠呦呦    时间: 2016-8-25 12:34
标题: 简单的多态案例
package com.itheima.day10_01;

/*  注释中 是问题
main方法中 s.fun2();的结果是输出: father
Child s。在Child中找不到fun2()方法,就去它的父类Father中去找,
找到了fun2()方法,那么就调用。
fun2()方法体中有
this.print();
这么一条语句,其中:
this 指的是什么?
print() 为什么会调用Father类中的print()方法。
*/
class Father {
        private void print() {
                System.out.println("Father");
        }

        public void fun2() {
                //代表本类当前对象的引用
                this.print(); // 调用print()方法   Father f = new Child();
                //Father f = new Son();
        }
};

class Child extends Father { // 定义继承关系
        void print() { // 并没有重写父类的print方法。private void print(){}
                System.out.println("Child");
        }

        public void fun() {
                this.print();   //Child c = new Son()
        }
};

class Son extends Child {
        void print() {
                System.out.println("Son");
        }

        public void fun0() {
                this.print();        // Son s =  new Son()
        }
};

public class OverrideDemo_Zxf {
        public static void main(String args[]) {
                Child c = new Child();
                c.fun();                //"Child"
                c.fun2();                // father
                Father f = new Father();
                f.fun2();                //"Father"
                System.out.println("-----------------------");
                Son s = new Son();
                s.fun0();// son son类自己已经重写child类的print方法
                s.fun();// son son类自己已经重写child类的print方法
                s.fun2();// father ?

        }
}




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