A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悠悠呦呦 中级黑马   /  2016-8-25 12:34  /  366 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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 ?

        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马