📜  Java中的super和this关键字(1)

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

Java中的super和this关键字

在Java中,关键字super和this都是用来引用对象的。这两个关键字在不同的情况下起不同的作用。

super关键字

super关键字用于引用父类的成员变量、成员方法和构造方法。使用super关键字的格式为:

super.成员变量
super.成员方法(参数列表)
super(参数列表)
引用父类的成员变量

如果子类和父类具有同名的成员变量,通过super关键字可以引用父类的成员变量。例如:

class Parent {
    String name = "parent"; 
}

class Child extends Parent {
    String name = "child"; 

    void print() {
        System.out.println(super.name); // 输出:parent
    }
}
引用父类的成员方法

使用super关键字可以调用父类的成员方法。例如:

class Parent {
    void print() {
        System.out.println("parent");
    }
}

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

在子类的构造方法中使用super关键字调用父类的构造方法。例如:

class Parent {
    Parent(String name) {
        System.out.println("Parent: " + name);
    }
}

class Child extends Parent {
    Child() {
        super("child");
    }
}
this关键字

this关键字用于引用当前对象的成员变量、成员方法和构造方法。使用this关键字的格式为:

this.成员变量
this.成员方法(参数列表)
this(参数列表)
引用当前对象的成员变量

如果方法的参数和类的成员变量同名,使用this关键字可以引用当前对象的成员变量。例如:

class Person {
    String name;

    Person(String name) {
        this.name = name; // 引用当前对象的name成员变量
    }
}
引用当前对象的成员方法

使用this关键字可以调用当前对象的成员方法。例如:

class Person {
    void print() {
        System.out.println("person");
    }

    void greet() {
        this.print(); // 调用当前对象的print方法
        System.out.println("hello");
    }
}
调用当前类的构造方法

在一个构造方法中使用this关键字调用当前类的其他构造方法。例如:

class Person {
    String name;

    Person(String name) {
        this.name = name; // 引用当前对象的name成员变量
    }

    Person() {
        this("unknown"); // 调用当前类的另一个构造方法
    }
}