Super方法怎么在Java项目中使用
更新时间:2023-11-15什么是Super方法?
Java中的Super是一个关键字,它代指父类的构造方法、属性和方法。在子类中,使用super可以指向父类中的方法或者属性,这样就可以在子类中对父类的属性和方法进行重用,从而避免了代码的重复编写。
父类属性和方法
在Java中,我们可以使用Super关键字调用父类中被子类覆盖的方法和属性,如下面例子所示:
public class Person {
protected String name = "Person";
public void display() {
System.out.println("I am a person.");
}
}
public class Student extends Person {
private String name = "Student";
public void display() {
System.out.println("I am a student.");
}
public void studentMethod() {
System.out.println("My name is " + name); // 输出:My name is Student
System.out.println("My superclass name is " + super.name); // 输出:My superclass name is Person
display(); // 输出:I am a student.
super.display(); // 输出:I am a person.
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.studentMethod();
}
}
在上面的例子中,我们创建了一个Person类和一个Student类,Student类继承自Person类。在Student类中我们定义了一个私有的name属性,并将其值设为“Student”。在studentMethod()方法中,我们使用name属性和display()方法的两种方式去输出,一种是通过Student类自身去取值,一种是通过super关键字取到父类中的对应属性或方法。
父类构造方法的使用
在Java中,子类一定会继承父类的构造方法,默认情况下,编译器会为子类生成一个无参的构造方法,但是在父类中包含有参的构造方法时,就必须手动添加一个与父类构造方法对应的子类构造方法。在子类构造方法中可以使用super关键字来调用对应的父类构造方法,如下例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Student extends Person {
private int no;
public Student(String name, int age, int no) {
super(name, age);
this.no = no;
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student("Tom", 20, 10001);
System.out.println(s.getName()); // 输出:Tom
System.out.println(s.getAge()); // 输出:20
System.out.println(s.getNo()); // 输出:10001
}
}
在上面的例子中,我们创建了一个Person类和一个Student类,在Person类中我们定义了一个含有两个参数的构造方法,Student类继承自Person类,并在Student类中定义了一个含有三个参数的构造方法,在其中使用了super关键字调用了Person类的构造方法。在Test类中,我们创建了一个Student对象,使用getter方法获取相关属性的值并输出
为什么要使用Super方法?
在开发过程中,经常会出现需要在子类中访问父类的属性或方法。通过使用Super进行调用父类相关属性或方法,可以避免重复编写代码,提高了代码的可读性。
此外,在子类的构造方法中使用Super调用父类的构造方法,也可以将参数传递到父类中,除了保留代码的可读性外,还可以避免在子类中重复编写成员初始化代码,提高开发效率。