c语言编程笔录

首页 >   > 笔记大全

笔记大全

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调用父类的构造方法,也可以将参数传递到父类中,除了保留代码的可读性外,还可以避免在子类中重复编写成员初始化代码,提高开发效率。