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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爱学习爱java.. 中级黑马   /  2016-8-18 09:34  /  478 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Grandfather
{        
        public void print()
        {        
                System.out.println("Grandfather") ;
        }
};


class Father extends Grandfather
{               
        public void print()
        {
                System.out.println("father") ;
        }
        public void funFather()
        {        
                this.print() ;        
                super.print() ;        
        }
};


class Child extends Father{        // 定义继承关系
        public void print()
        {        
                System.out.println("child") ;
        }
        public void funChild()//避免覆写
        {
                this.print() ;        
                super.print() ;        
        }
        
};


public class test3{
        public static void main(String args[])
        {
                Child s = new Child() ;
                s.funFather() ;//此处通过继承调用父类函数中的     this.print与super.print
                s.funChild();//此处直接调用子类类                this.print与super.print
        }
};
输出为
child
Grandfather
child
father
为什么第一个输出是child呢???而不是father??

5 个回复

倒序浏览
帮你顶顶
回复 使用道具 举报
this表示调用当前对象。funFather() 的调用者是Child s ,所以这个方法里面的this.print()是child的print
回复 使用道具 举报
talons 发表于 2016-8-18 09:55
this表示调用当前对象。funFather() 的调用者是Child s ,所以这个方法里面的this.print()是child的print ...

谢谢。貌似理解一点了     
回复 使用道具 举报
this表示对当前对象进行引用,super表示对父类的对象进行引用
回复 使用道具 举报
一个是当对象,一个是当前父类对象,慢慢捋一遍就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马