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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Massive 中级黑马   /  2013-11-3 22:12  /  1200 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    初学java,还不太懂,求解答。    在this和super这里有点不理解。
    this代表对象的引用(谁调用就代表谁)
    super代表当前子类对象父类的引用
    当父类出现同名成员时,可以用

    对于this我是这样理解的,就是this记录的是一个地址值,谁调用了this,那么this就把地址值传给谁(也就是谁调用就代表谁)
   
    不知道这样理解对不对?
   
    对于(super代表当前子类对象父类的引用)这句话我就完全不明白了,求解答。

评分

参与人数 1技术分 +1 收起 理由
To + 1 鼓励

查看全部评分

5 个回复

倒序浏览
this代表了本类的对象,即代表了它所在函数所属对象的引用,也就是说,哪个对象调用这个函数,this就代表哪个对象。
super:父类对象引用,用于子类初始化父类构造函数时等
比如函数覆盖:当子类同父类出现相同函数时,子类对象调用该函数时,会运行子类内容,如同覆盖谷类函数一样。实际上并没有覆盖父类的函数,如果还需要调用父类的这个方法,需要用super.方法名即可。
class Father
{
        int num = 3;
        void show()
        {
                System.out.println(num);
        }
}

class Son extends Father
{
        int num = 5;
        //复写父类函数
        void show()
        {
                System.out.println(num);//this引用,此处省略this,结果是5
                System.out.println(super.num);//super引用,结果是3.
        }
}

class Demo
{
        public static void main(String [] args)
        {
                Son s = new Son();
                s.show();
        }
}

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
this就代表你当前的这个类的对象,this不能再类外面使用。如果你在class外面使用,系统不知道你这个this是指代的谁。
super也差不多,必须在类里面使用,代表你这个类的父类的对象,如果你在类外面使用super,那谁能知道你想调用哪个父类? super其实就相当于你在子类创建了一个父类的对象,用这个对象来调取一些父类的方法。这样好理解么

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 感谢你的回答!

查看全部评分

回复 使用道具 举报
this:表示动态绑定的当前对象
class A{  int a=1;
  void a(){
    System.out.println(this.a);
  };
}
class B{
  int b = 2;
  void b(){
    System.out.println(this.b);
  }
}
main方法:
A a = new A();
a.a();//输出语句的this就是a对象
B b = new B();
b.b();//this就是b对象

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
帖子已重新分类,若仍有疑问,可重新提问。
回复 使用道具 举报
我跟你理解的一样的,也是哪个对象调用那个方法那么this就是指向那个调用方法的对象的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马