this

super

this存储在JVM堆内存中Java对象的内部,

this变量 中保存了内存地址指向了自身

super 可以理解为是指向自己父类对象的一个指针,

而这个父类指的是离自己最近的一个父类


调用一般属性一般方法(而非静态的)

We can call the superclass methods

and access superclass variables using super keyword


放在类成员的位置

this

super

属性

属性

方法

方法

构造方法

构造方法



内部类

内部类


super 和 this 可以互相调用吗?

一般方法之间
任意两个一般方法可以来回相互调用(隐含使用this )编译能过,但是有可能会出现栈内存溢出

构造方法之间
1、thissuper 可以在构造方法中,但是必须要放在构造方法的 第一行 否则编译报错,而且此时顶替掉了 默认的super()构造方法
2、构造方法中以下不允许:出现 多个this多个supersuper和this组合 3、任意两个构造方法不能来回相互调用,编译过不去


综述对比

We can call the superclass methods and access superclass variables using super keyword
1.this和super都是指代词:代替的是实例对象
2.this指代的是:执行方法是一般方法  当前对象,但不一定是当前类的对象--
				   如果执行的是构造方法的话,this只能指代当前对象,不会有机会指代子类对象
3.super指代的是:包含这个super语句的执行方法所在类的父类的对象 !!!!!!!!!!!!!!!!!!自己总结的这句话
4.this和super都能调用一般属性和一般方法(而非静态的)
5.this和super可以放在类成员的任意位置---属性--方法--构造方法--块
	5.1一般方法之间---任意两个一般方法可以来回相互调用---编译能过---但是有可能会出现栈内存溢出
	5.2构造方法之间---任意两个构造方法不能来回相互调用---编译过不去-----因为他们来来回调用---没有给super留一个位置去创建父类对象
	5.3this 和 super 可以在构造方法中来调用自己或父亲类的构造方法,必须要放在构造方法的第一行---否则编译报错--而且此时顶替掉了默认的super()构造方法
	5.4构造方法中以下不允许:出现多个 this---多个 super---super 和 this 的组合。因为都要求第一行的话,但是不能同时出现在代码的第一行