this
this的含义:当前对象的引用
使用位置:
①构造代码块②构造器:表示正在创建的那个实例对象,即正在new谁,this就代表谁
③非静态的实例方法:表示调用该方法的对象,即谁在调用,this就代表谁。
使用方式:
A、this(参数)或者this(无参)
表示本类的构造器,故只能用在②构造器中,且位于构造器中的第一行;
B、this.成员变量
三个位置都可以使用;
一般当成员变量和局部变量重名时这样使用,如果没有重名问题,可以省略this;
this.成员变量会先从本类声明的成员变量列表中查找,如果未找到,会从父类继承的在子类中仍可见(即可访问)的成员变量表中查找。
C、this.成员方法
三个位置都可以使用;
调用当前对象的成员方法时,都可以加this,也可以省略,实际开发中都省略;
this.成员方法 先从本类声明的成员方法列表中查找,如果未找到,会去从父类继承的在子类中仍然可见(即可访问)的成员方法列表中查找;
this不能在静态方法和静态代码块中使用
静态方法和静态代码块,先于对象初始化执行,静态方法和静态代码块执行时,而this代表的是当前对象
Super
super的含义:
和this区别的是,super只是当前类访问父类数据的一个关键字,不代表对象,所以super关键字不能单独使用;
使用方式及位置:
A、super()或者super(参数);只能在构造器中使用,表示调用父类的构造器
B、super.成员:可以在构造器、构造代码块、非静态实例方法中使用,访问父类的成员(属性和方法);
this不能在静态方法和静态代码块中使用
静态方法和静态代码块都是在类的初始化阶段就执行了,而 super代表子类对父类满参构造函数的初始化,也是需要产生对象才可以使用,换句话说,super this都是对象初始化及以后才能使用,而静态方法和静态代码块是在类初始化时执行,先于对象初始化。