java中super是什么意思? java this和super的区别

Java中super是什么意思

在Java中,super是一个关键字,用于引用父类的成员变量、方法和构造函数。它可以被用于子类中,以便访问父类中的成员。下面将介绍super的具体用法。

super用于访问父类的成员变量和方法

1、使用super访问父类的成员变量

在子类中,如果父类和子类都有同名的成员变量,那么使用super关键字可以访问父类的成员变量。例如:

public class Parent {
    int num = 10;
}
public class Child extends Parent {
    int num = 20;
    public void printNum() {
        System.out.println(super.num); //输出10
        System.out.println(num); //输出20
    }
}

2、使用super访问父类的方法

在子类中,如果父类和子类都有同名的方法,那么使用super关键字可以调用父类的方法。例如:

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

super用于调用父类的构造函数

3、使用super调用父类的无参构造函数

在子类的构造函数中,如果没有显式地调用父类的构造函数,那么Java会默认调用父类的无参构造函数。如果父类没有无参构造函数,那么编译器会报错。如果需要调用父类的有参构造函数,那么可以使用super关键字。例如:

public class Parent {
    public Parent() {
        System.out.println("I am Parent");
    }
}
public class Child extends Parent {
    public Child() {
        super(); //调用父类的构造函数
        System.out.println("I am Child");
    }
}

4、使用super调用父类的有参构造函数

在子类的构造函数中,如果需要调用父类的有参构造函数,那么可以使用super关键字。例如:

public class Parent {
    public Parent(int num) {
        System.out.println("I am Parent, num is " + num);
    }
}
public class Child extends Parent {
    public Child(int num) {
        super(num); //调用父类的有参构造函数
        System.out.println("I am Child");
    }
}

Java中this和super的区别

5、this关键字

this关键字用于引用当前对象,它可以用于访问当前对象的成员变量和方法。例如:

public class Person {
    private String name;
    public Person(String name) {
        this.name = name; //使用this关键字访问成员变量
    }
    public void printName() {
        System.out.println(this.name); //使用this关键字访问成员变量
    }
}

6、super关键字

super关键字用于引用父类的成员变量、方法和构造函数。它可以用于子类中,以便访问父类中的成员。例如:

public class Parent {
    private String name;
    public Parent(String name) {
        this.name = name;
    }
    public void printName() {
        System.out.println(this.name);
    }
}
public class Child extends Parent {
    public Child(String name) {
        super(name); //调用父类的构造函数
    }
    public void printParentName() {
        super.printName(); //调用父类的printName方法
    }
}

7、this和super的区别

this关键字用于引用当前对象,而super关键字用于引用父类的成员。this关键字只能用于访问当前对象的成员,而super关键字可以用于访问父类的成员。此外,this关键字只能用于非静态方法中,而super关键字可以用于静态方法和非静态方法中。

延伸阅读:

上一篇:java中score是什么意思? eclipse怎么成绩等级划分

下一篇:java中super是什么意思? java里super表示什么