Java中的继承和“super”函数
Java中的继承是面向对象编程中的一个重要概念,它允许我们定义一个新的类来扩展现有类的功能。这种扩展是通过继承父类来完成的,子类可以继承父类的属性和方法,并且还可以添加新的属性和方法来拓展功能。在Java中,我们可以使用“extends”关键字来指定一个类的父类,例如:
public class Student extends Person {
//...
}
在这个例子中,我们定义了一个名为“Student”的类,它继承自“Person”类。这意味着“Student”类具有“Person”类的所有属性和方法。此外,我们还可以在“Student”类中添加新的属性和方法,例如:
public class Student extends Person {
private int studentId;
public int getStudentId() {
return studentId;
}
//...
}
在这个例子中,我们添加了一个名为“studentId”的属性和一个名为“getStudentId”的方法。这些新的属性和方法只属于“Student”类,而不属于“Person”类。
除了继承父类的属性和方法,子类还可以使用“super”函数来调用父类中的方法或属性。例如,我们可以在“Student”类中调用“Person”类的构造函数,如下所示:
public class Student extends Person {
private int studentId;
public Student(String name, int age, int studentId) {
super(name, age);
this.studentId = studentId;
}
public int getStudentId() {
return studentId;
}
//...
}
在这个例子中,我们定义了一个名为“Student”的构造函数,并且使用“super”函数来调用“Person”类的构造函数。这里的“super”函数表示调用父类中的构造函数,它接受和父类构造函数相同的参数(在本例中为“name”和“age”)。在“Student”类中,我们还可以使用“super”函数来调用父类中的方法或属性。例如,我们可以调用“Person”类的“getName”方法:
public class Student extends Person {
private int studentId;
public Student(String name, int age, int studentId) {
super(name, age);
this.studentId = studentId;
}
public String getName() {
return super.getName() + " (Student)";
}
//...
}
在这个例子中,我们覆盖了“Person”类中的“getName”方法,并在方法体中调用了“super.getName”。这样做可以让我们调用父类中的方法,并以此为基础来添加新的逻辑。在这个例子中,我们在父类中返回的名称后添加了“(Student)”字符串。
总之,继承和“super”函数是Java中面向对象编程的核心概念之一。通过继承父类,我们可以扩展现有类的功能,在子类中添加新的属性和方法。同时,我们还可以使用“super”函数来调用父类中的方法和属性,并以此为基础添加新的逻辑。这种机制可以让我们更容易地开发和维护面向对象的程序。
