Java中的super关键字用于访问父类中的成员变量、成员方法和构造方法。在本篇攻略中,我们将详细讲解super关键字的用法和细节,同时提供两个示例说明。
1. 访问父类成员变量
Java中,我们可以使用super关键字来访问父类的成员变量。在父类中声明的private成员变量无法在子类中直接访问,但是使用super关键字可以间接访问。
以下是一个示例:
class Parent {
private int age = 30;
}
class Child extends Parent {
public void printAge() {
System.out.println(super.age);
}
}
在上面的示例中,Child类使用super.age来访问Parent类中的private成员变量age,因为age是private的,如果在Child中直接访问会编译失败,但是通过使用super关键字可以成功编译并正确输出结果。
2. 访问父类成员方法
Java中,我们也可以使用super关键字来访问父类的成员方法。在子类中重写父类的成员方法时,使用super关键字可以调用父类的原始实现。
以下是一个示例:
class Parent {
public void sayHello() {
System.out.println("Hello");
}
}
class Child extends Parent {
public void sayHello() {
super.sayHello();
System.out.println(" world");
}
}
在上面的示例中,Child类继承了Parent类的sayHello方法,并通过使用super关键字调用了父类的原始实现。在Child类中的sayHello方法中,先输出“Hello”,再输出“world”,最终打印出“Hello world”。
3. 调用父类构造方法
Java中,子类的构造方法必须调用父类的构造方法来初始化父类的成员变量。如果没有手动调用父类的构造方法,编译器会自动调用父类的无参构造方法来初始化父类的成员变量。但是如果父类中没有无参构造方法,子类就必须手动调用父类的其他构造方法。
以下是两个示例:
3.1 手动调用父类的构造方法
class Parent {
private int age;
public Parent(int age) {
this.age = age;
}
}
class Child extends Parent {
public Child(int age) {
super(age);
}
}
上面的示例中,Child类的构造方法中手动调用了父类的构造方法,来初始化父类的私有成员变量age。
3.2 调用父类的默认构造方法
class Parent {
private int age;
public Parent(int age) {
this.age = age;
}
}
class Child extends Parent {
public Child() {
super(0);
}
}
上面的示例中,Child类中的构造方法没有参数,但是手动调用了父类的有参构造方法来初始化父类的私有成员变量age,因为父类没有默认构造方法。
总结:
在Java的继承中,super关键字的用法主要包括访问父类成员变量、访问父类成员方法和调用父类构造方法。其中,在调用父类构造方法时,可以手动调用父类的有参构造方法或默认构造方法,如果父类没有默认构造方法,则必须手动调用其他构造方法来初始化父类的成员变量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中super关键字的用法和细节 - Python技术站