📜  Javasuper 和 super() 的区别示例(1)

📅  最后修改于: 2023-12-03 15:01:49.363000             🧑  作者: Mango

Java中super和super()的区别示例

在Java中,super和super()是用于在子类中访问父类成员和调用父类构造方法的关键字。它们的使用有着一些区别,下面将详细介绍它们的用法和区别。

super关键字

super关键字用于在子类中访问父类的成员变量或成员方法。可以通过super来解决子类和父类中成员名称重名的问题。

以下是super关键字的一些使用示例:

class Parent {
    int x = 10;
    
    void show() {
        System.out.println("Parent: " + x);
    }
}

class Child extends Parent {
    int x = 20;
    
    void show() {
        System.out.println("Child: " + x);
        System.out.println("Parent: " + super.x); // 使用super来访问父类的成员变量
        super.show(); // 使用super调用父类的成员方法
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.show();
    }
}

输出结果:

Child: 20
Parent: 10
Parent: 10

在上面的示例中,子类Child中有一个成员变量x和一个成员方法show(),而父类Parent中也有一个成员变量x和一个成员方法show()。通过super关键字,可以在子类中访问父类的成员变量和调用父类的成员方法。

super()方法

super()方法用于调用父类的构造方法。在子类中的构造方法中使用super()可以显式地调用父类的构造方法。如果没有显式调用,Java编译器会默认在子类的构造方法中插入super()调用父类的无参构造方法。

以下是super()方法的一些使用示例:

class Parent {
    Parent() {
        System.out.println("Parent constructor");
    }
}

class Child extends Parent {
    Child() {
        super(); // 显式调用父类的构造方法
        System.out.println("Child constructor");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
    }
}

输出结果:

Parent constructor
Child constructor

在上面的示例中,子类Child中的构造方法中使用super()显式调用了父类Parent的构造方法。

需要注意的是,super()方法必须在子类构造方法的第一行,因为父类的构造方法需要在子类的构造方法执行之前先执行。

super和super()的区别

super关键字用于访问父类的成员变量和成员方法,而super()方法用于调用父类的构造方法。

总结一下super和super()的区别:

  • super关键字用于访问父类的成员变量和成员方法。
  • super()方法用于调用父类的构造方法,必须在子类构造方法的第一行。
  • super关键字可以在任意位置使用,用于指定访问父类的成员变量和成员方法。
  • super()方法可以只写一个空括号super(),表示调用父类的无参构造方法。

希望以上内容对您有所帮助!