this与super构造器
时间: 2024-02-22 17:56:26 浏览: 69
this和super都是用于调用构造器的关键字,它们的使用有以下几点区别:
1. this用于调用本类的构造器,可以在构造器内部调用本类中的其他构造器。而super用于调用父类的构造器,可以在子类的构造器中使用,用于初始化父类的属性。
2. this()语句必须放在构造器的第一行,用于调用本类的其他构造器。而super()语句也必须放在构造器的第一行,用于调用父类的构造器。
3. 如果没有显式地调用this()或super(),则系统默认调用无参构造器。
下面是一个示例代码,演示了如何使用this和super关键字调用构造器:
```
class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
System.out.println("Animal constructor called.");
}
}
class Cat extends Animal {
private String color;
public Cat(String name, int age, String color) {
super(name, age); // 调用父类的构造器
this.color = color;
System.out.println("Cat constructor called.");
}
}
public class Test {
public static void main(String[] args) {
Cat c = new Cat("Tom", 2, "white");
}
}
```
在这个示例中,我们定义了一个Animal类和一个Cat类,Cat类继承自Animal类。Animal类有一个构造器,Cat类有一个构造器。在Cat类的构造器中,我们使用了super关键字调用了Animal类的构造器,用于初始化Animal类中的属性。同时,我们也使用了this关键字调用了Cat类自身的构造器,用于初始化Cat类中的属性。最后,我们在main()方法中创建了一个Cat对象。当程序运行时,会依次调用Animal类和Cat类的构造器。
阅读全文