什么是super?
在Java编程语言中,super是一个关键字,它可以用于访问父类中的成员变量和方法。当子类继承父类时,它会继承父类的所有成员变量和方法。有时候,在子类中需要访问父类中的某个成员变量或方法,这时就可以使用super关键字来实现。
super的使用方法
在Java中,使用super关键字访问父类中的成员变量或方法有两种方式:
- 访问父类中的成员变量
- 调用父类中的方法
使用super关键字可以访问父类中的成员变量。例如,如果父类中有一个名为name的成员变量,可以使用super.name来访问它。
使用super关键字可以调用父类中的方法。例如,如果父类中有一个名为printName的方法,可以使用super.printName()来调用它。
super的注意事项
在使用super关键字时,需要注意以下几点:
- super关键字只能用于访问父类中的成员变量和方法,不能用于访问子类中的成员变量和方法。
- 如果子类中没有覆盖父类中的方法,可以直接使用super关键字调用父类中的方法。
- 如果子类中覆盖了父类中的方法,可以使用super关键字调用父类中的方法,但需要注意避免出现死循环的情况。
- 在构造方法中使用super关键字时,必须放在构造方法的第一行。
- 如果父类中没有无参构造方法,子类必须显式调用父类的构造方法。
super的示例代码
下面是一个使用super关键字的示例代码:
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println(name);
}
}
public class Dog extends Animal {
private int age;
public Dog(String name, int age) {
super(name);
this.age = age;
}
public void printAge() {
System.out.println(age);
}
public void printName() {
super.printName();
System.out.println("I am a dog");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Tommy", 3);
dog.printName();
dog.printAge();
}
}
在上面的示例代码中,Dog类继承了Animal类,并使用super关键字调用了Animal类的构造方法。在Dog类中,覆盖了Animal类中的printName方法,并使用super关键字调用了Animal类中的printName方法。
