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...

[Java] super,this 的区别及构造方法的使用

1、构造方法的使用类有一个特殊的成员方法叫做构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。 JAVA中构造方法必须与该类具有相同的名字,并且没有方法的返回类型(...

Java中super的几种用法并与this的区别

Super的功能就是继承父类的成员和方法,下面先介绍Super的用法再介绍与this的区别。 Super的用法: 1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位...

Java中super的几种用法并与this的区别

子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println(“Base”); } } p...
  • mada26
  • mada26
  • 2016年04月16日 14:07
  • 198

java中super和this函数的区别

1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base {     Base() {        System.out.pri...

java中super和this的区别

package learn_20150506; import java.util.Date; import java.util.GregorianCalendar; public class Em...

java super和this 的区别

1.什么是super?什么是this?   super关键字表示超(父)类的意思。this变量代表对象本身。   2.使用super&this调用成员变量和方法   可以使用supe...
  • Q176782
  • Q176782
  • 2016年03月15日 20:44
  • 208

java中this和super的区别

类的继承知识点   (1)java不支持多重继承,也就是说子类至多只能有一个父类   (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法   (3)子类中定义的成员变量和父...

Java中super的几种用法及与this的区别

1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base {     Base() {        System.out.println("...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java this与super的区别
举报原因:
原因补充:

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