java中super与this关键字
胜利者往往是从坚持最后五分钟的时间中得来成功。——牛顿
1、super关键字表示父(超)类,this指代当前对象。
2、可以使用super来调用父类被子类隐藏的变量或覆盖的方法,当调用super.XX()就是调用父类的
XX()方法。
3、当类中有两个同名变量时,一个是类的成员变量,一个是方法的局部变量,this关键字可以区别这两个变量
4、this可以表示当前调用方法的对象引用。例:
People p1;
p1.addActionListener(this);
5、super调用构造方法,表示调用父类的某一个构造方法,应放在构造方法里第一句。
this调用构造方法,表示调用当前类的别的构造方法,应放在构造方法里第一句。
注意事项
1、其实每个子类的构造方法都隐式的调用了super(),若
当前父类没有相应的构造方法,编译器会报错。
2、super()从子类调用父类的构造方法,this()调用当前类的其他构造方法.
3、super()和this()必须放在构造方法里第一行
4、this()可以调用一个构造器,但不能调用两个
5、this()和super()不能同时出现在一个构造方法中,因为this()代表同类其他的构造方法,那其中也包含了super(),这样就出现了重复,失去意义,编译器会报错。
6、this()和super()都指代对象,所以不能出现在static环境(static方法、static块、static变量)中。
7、从本质上讲,super是一个Java关键字,this是指向当前对象的指针
8、在构造方法里的this,表示的是正在构造的对象。
public People() {
System.out.plintln(this.toString());
}
原因是java中调用构造方法之前,这个对象已经存在,所以构造方法中this调用的是当前被构造的对象。
本文主要参考自 http://zhangjunhd.blog.51cto.com/113473/20531/
和一些相关帖子。