this关键字
定义:表示对调用方法的那个对象的引用,只能在方法内部使用。
默认情况下,每当创建一个类的对象时,该对象就会拥有一份属于自己的全部数据成员的副本(实例变量),即多个存储空间,而this是表示对调用方法的那个对象的引用,能定位不同的实例变量。可以思考,静态变量不需要this来定位所以静态方法不需要this。
- 当前对象传递给其它外部方法可以用this(用于不同的类,同一类不用)
class Peeler {
static Apple peel(Apple apple)
return apple;
}
class Apple {
Apple getPeeled(){
return Peeler.peel(this);
}
}
- 用于构造器中调用构造器
- this不能同时调用两个,且必须置于最起始处
- 除构造器外,其它函数不能调用构造器
- 同一个类中调用方法不用加this,默认有this。
super和this的区别
- super关键字表示超(父)类的意思。this变量代表对象本身。
- super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。其中超类是最近的父类。
- 调用super() 父类构造函数的时候只能调用在子类构造函数的第一行
- this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this
class Person {
protected void print() {
System.out.println("The print() in class Person.");
}
}
public class DemoSuper extends Person {
public DemoSuper(){
super(); //调用父类的构造方法,而且放第一行,如果不写,系统自动加
}
public void print() {
System.out.println("The print() in class DemoSuper.");
super.print();// 调用父类的方法
}
public static void main(String[] args) {
DemoSuper ds = new DemoSuper();
ds.print();
}
}