this关键字,this指向对象本身,一个类可以通过this来获得一个代表它自身的对象变 量。this使用在如下三种情况中:
使用this变量的示例代码:
public class Person {
// 名字
private String name;
// 年龄
private int age;
// 出生日期
private Date birthDate;
// 三个参数构造方法
public Person(String name, int age, Date d) {
this.name = name;
this.age = age;
birthDate = d;
System.out.println(this.toString());
}
public Person(String name, int age) {
// 调用三个参数构造方法
this(name, age, null);
}
public Person(String name, Date d) {
// 调用三个参数构造方法
this(name, 30, d);
}
public Person(String name) {
// System.out.println(this.toString());
// 调用Person(String name, Date d)构造方法 ,这里会发生编译错误
this(name, null);
}
@Override
public String toString() {
return "Person [name=" + name
+ ", age=" + age
+ ", birthDate=" + birthDate + "]";
}
}
注意:使用this调用其他构造方法时,this语句一定是该构造方法的第一条语句。
super关键字指代当前对象的超类对象。即:当前对象的父类对象。super关键字一般用在子类中。
super关键字的作用:
父类Person代码如下:
public class Person {
// 名字
private String name;
// 年龄
private int age;
// 出生日期
private Date birthDate;
// 三个参数构造方法
public Person(String name, int age, Date d) {
this.name = name;
this.age = age;
birthDate = d;
System.out.println(this.toString());
}
public Person(String name, int age) {
// 调用三个参数构造方法
this(name, age, null);
}
public Person(String name, Date d) {
// 调用三个参数构造方法
this(name, 30, d);
}
public Person(String name) {
// System.out.println(this.toString());
// 调用Person(String name, Date d)构造方法 ,这里会发生编译错误
this(name, null);
}
}
子类Student代码如下:
public class Student extends Person {
// 所在学校
private String school;
public Student(String name, int age, Date d, String school) {
super(name, age, d);
this.school = school;
}
public Student(String name, int age, String school) {
// this.school = school;//编译错误
super(name, age);
this.school = school;
}
public Student(String name, String school) {
// 编译错误 3
// super(name, 30);
this.school = school;
}
}
注意:super语句必须位于子类构造方法的第一行。
代码第③行构造方法由于没有super语句,编译器会试图调用父类默认构造方法(无参数构造方法), 但是父类Person并没有默认构造方法,因此会发生编译错误。解决这个编译错误有三种办法:
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!