📅  最后修改于: 2023-12-03 15:07:02.157000             🧑  作者: Mango
在 Java 中,我们可以使用 this()
和 super()
来调用当前类或父类的构造方法。本文将着重讲解二者的区别。
this()
是一个指向类的当前实例的指针。它可以用来引用当前对象的方法、属性和构造函数。使用 this()
调用当前类的构造函数时,需要注意以下几点:
this()
必须放在构造函数的第一行;this()
;this()
或 super()
,Java 会自动调用无参的父类构造函数。下面是一个含有 this()
的示例代码:
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
Person() {
this("Tom", 20);
}
}
class Employee extends Person {
String id;
Employee(String name, int age, String id) {
super(name, age);
this.id = id;
}
Employee() {
this("Jerry", 30, "001");
}
}
上述代码中,Person
类含有一个含参构造函数和一个无参构造函数。Employee
类继承了 Person
类,并含有一个含参构造函数和一个无参构造函数。当我们使用 new Employee()
创建一个对象时,会自动调用无参的构造函数。
super()
是一个指向父类的指针,用来引用父类的方法、属性和构造函数。使用 super()
调用父类的构造函数时,也需要注意以下几点:
super()
必须放在构造函数的第一行;super()
,Java 会自动调用无参的父类构造函数。下面是一个含有 super()
的示例代码:
class Animal {
String name;
Animal() {
this.name = "Animal";
}
Animal(String name) {
this.name = name;
}
}
class Dog extends Animal {
String breed;
Dog() {
super();
this.breed = "unknown";
}
Dog(String name, String breed) {
super(name);
this.breed = breed;
}
}
上述代码中,Animal
类含有一个无参构造函数和一个含参构造函数。Dog
类继承了 Animal
类,并含有一个无参构造函数和一个含参构造函数。当我们使用 new Dog()
创建一个对象时,会自动调用无参的构造函数。
this()
是指向当前对象的指针,用来引用当前对象的方法、属性和构造函数;super()
是指向父类的指针,用来引用父类的方法、属性和构造函数;this()
和 super()
调用构造函数时,需要遵守一些规则。以上就是 this()
和 super()
的区别及用法,希望能对大家有所帮助!