java this与super的区别

转载 2013年12月04日 17:00:42
"this",作为一个特殊的关键字,它的规则如下: 
1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。 
2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。

"super",但是也有不同的地方:
1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用。比如super.method()。 
但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。

为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。 
所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。

所以,你只要把super.xxx看成一个特殊的语法,比如理解为“super::xxx”就好了。

既然super不是一个变量,那么不能把它象一个普通变量那样"==",或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。

3。super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。

Java中this与super的区别

this与super关键字在java中构造函数中的应用: **super()函数** super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行,例如:class A...
  • zuoyang1990
  • zuoyang1990
  • 2016年12月05日 23:23
  • 8413

Java super和this的异同总结

super和this的异同        1)super(参数列表):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)            this(参数列表):调用本类中另一种形成的构造...
  • lh__huahuan
  • lh__huahuan
  • 2016年01月02日 10:56
  • 637

this 和super 关键字的区别

属性的区别:this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。 方法的区别:this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父...
  • wanping321
  • wanping321
  • 2017年01月09日 16:12
  • 1946

super,this的区别和使用

this的使用和说明java的this关键字只能用于方法体内,java虚拟机(JVM)会给这个对象分配一个引用自身的指针,这个指针的名字就是this.注意:函数参数或者函数中的局部变量和成员变量同名的...
  • z_dianjun
  • z_dianjun
  • 2016年03月25日 22:28
  • 2596

Java中this和super关键字的区别

this强调的是对象的本身,通过this调用的属性和方法都是它所属于的那个类中的属性和方法。属于对象和类间的关系 super在子类中调用父类的方法和属性。属于子类和父类两个类间的关系//父类 pub...
  • android_hl
  • android_hl
  • 2016年11月12日 14:52
  • 292

Java 泛型 <? super T> 中 super 怎么 理解<?与 extends> 有何不同?

Java 泛型 中 super 怎么 理解 有何不同? 问题引入: // compile error // List appList2 = new ArrayList();...
  • lswlov
  • lswlov
  • 2016年11月26日 17:33
  • 1170

super与this关键字的用法与区别

介绍:this:当前对象 super:直接父类对象 this():当前类的无参构造方法,也可以指定有参的如:this(a) super():直接父类的无参构造方法,也可以指定有参的如:super(a)...
  • qq_32331073
  • qq_32331073
  • 2017年08月11日 15:08
  • 292

Java笔记十六.java中的this和super用法

一、this引用句柄     this引用句柄在Java程序里的作用,可表现为它在函数内部就是这个函数所属的对象的引用变量,即当前对象。在成员方法中,对访问的同类中成员前加不加this引用,效果都是一...
  • u012637501
  • u012637501
  • 2015年01月27日 11:33
  • 1523

java中 this 与 super 的区别

this通常指当前对象,super则指父类的。当想要引用当前对象的某个方法,或当前对象的某个成员,就可以使用this来实现,当然,this的另一个用途是调用当前对象的另一个构造函。 this只能...
  • PrairieLoneWolf
  • PrairieLoneWolf
  • 2012年10月09日 17:10
  • 1046

java面试题总结之super()与this()的区别

super()与this()的区别? this()调用当前对象的无参构造函数,super()调用父类的无参构造函数        1)super(参数):调用基类中的某一个构造函数(应该为构造...
  • cnxxrj
  • cnxxrj
  • 2015年05月15日 08:25
  • 1332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java this与super的区别
举报原因:
原因补充:

(最多只允许输入30个字)