super的使用:
super是指在子类继承父类时需要调用父类的属性,方法或者构造方法是用super进行调用。
(1)调用父类的属性
格式: super.属性名;
(2)调用父类的方法
格式: super.方法名;
(3)调用父类的构造方法
格式: super();
子类继承父类,父类中的构造方法中有一个隐式的调用父类构造方法的super();语句,用来在子类初始化之前查看父类是如何初始化的。
子类也可以指定super语句对构造方法进行初始化。如下所示:
//父类
public class Person {
//构造函数
Person(){
}
Person(String name){
this.name = name;
}
Person(String name, String sex){
this.name = name ;
this.sex = sex;
}
public String name;
public void spreak(){
}
}
//子类
public class Student extends Person {
Student(){
//super();有一句隐式的super()调用父类的构造函数。
}
Student(String name){
super(name);//调用父类的构造方法
}
public static void main(String[] args){
super.name = "李四";
super.speak();
}
注意:
super必须放在子类构造方法的第一行!在子类中至少有一个构造方法调用了父类的构造方法。
this的使用:
this是指调用该方法或属性的对象。
(1)调用对象的属性
格式: this.属性名;
(2)调用对象的方法
格式: this.方法名;
(3)调用对象的构造方法
格式: this();
public class Person {
Person(){
}
Person(String name){
this.name = name;
}
Person(String name, String sex){
this(name);
this.sex = sex;
}
这其中的this是指创建Person类对象的Person类对象以后,this.name = name;
中将name赋值给对象的name。
注意:
this必须放在子类构造方法的第一行!
由于this和super都是放在构造方法的第一行。因此this和super在构造函数中不能同时使用。