资源说明:Java中this与super的区别
this&super;
什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
Java关键字this只能用于方法的方法体内。当一个对象创建后,
Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。
当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,
你便可以利用this来实现这个目的。要注意的是this只能在类中的非静态方法中使用,
静态方法和静态的代码块中绝对不能出现this。this也可作为构造函数来使用。在后面可以看到
而什么是super,可以理解为是指向自己超(父)类对象的一个指针,
而这个超类指的是离自己最近的一个父类。super的作用同样是可以作为构造函数使用,
或者是获取被局部变量屏蔽掉的父类对象的某个同名变量的值。
super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,
或者说用来引用被屏蔽的成员变量和成员成员方法。
作为构造函数使用
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
要记住的几个关键点是:
在构造方法中this与super不能共存;其次有this或super出现的地方必须是构造方法的第1句;
静态方法,也就是类方法中不能有this和super关键字
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位.
复制代码
class Base {
Base() {
System.out.println("Base");
}
}
public class Checket extends Base {
Checket() {
super();// 调用父类的构造方法,一定要放在方法的首个语句
System.out.println("Checket");
}
public static void main(String argv[]) {
Checket c = new Checket();
}
}
复制代码
结果:
Base
Checket
如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,
肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。
那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。
2. 在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)
中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,
所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,
但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.
。。。。。。。。。。。。。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。