黑马程序员技术交流社区

标题: 关于this与super关键字的问题 [打印本页]

作者: Massive    时间: 2013-11-3 22:12
标题: 关于this与super关键字的问题
    初学java,还不太懂,求解答。    在this和super这里有点不理解。
    this代表对象的引用(谁调用就代表谁)
    super代表当前子类对象父类的引用
    当父类出现同名成员时,可以用

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

作者: heke    时间: 2013-11-3 22:33
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();
        }
}
作者: 那得好好想想    时间: 2013-11-4 10:17
this就代表你当前的这个类的对象,this不能再类外面使用。如果你在class外面使用,系统不知道你这个this是指代的谁。
super也差不多,必须在类里面使用,代表你这个类的父类的对象,如果你在类外面使用super,那谁能知道你想调用哪个父类? super其实就相当于你在子类创建了一个父类的对象,用这个对象来调取一些父类的方法。这样好理解么
作者: ciowok    时间: 2013-11-4 11:25
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对象

作者: 黄炳期    时间: 2013-11-4 11:51
帖子已重新分类,若仍有疑问,可重新提问。
作者: 何超    时间: 2013-11-4 20:56
我跟你理解的一样的,也是哪个对象调用那个方法那么this就是指向那个调用方法的对象的!




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