this是自身的一个对象,代表对象本身
this:当前对象
this.属性;当前对象的属性
this([参数]);当前对象构造函数
必须写在构造函数内的首行
this.函数名([参数]);当前对象的函数
· 形参和成员名重名,用this来区分
super:父类对象
super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也大致分为3中中用法
1、普通的直接引用,与this类似,只不过它是父类对象,可以通过它调用父类成员。
2、子类中的成员变量或方法与父类中的成员变量或方法同名,可以使用super区分。
3、引用构造方法,super(参数):调用父类中的某一个构造方法(应该为构造方法中的第一条语句)
super.属性;父类的属性
super([参数]);父类的构造函数
每一个构造函数内都默认有一个无参的super();
个人总结
1、super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它构造方法。
2、super()和this()均需放在构造方法内首行。
3、尽管可以用this调用一个构造器,但却不能调用两个。
4、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
5、从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。