Java super关键字的用法详解
简介
在Java中,有一个关键字叫作“super”,用于访问父类的属性和方法。它常常与子类的构造器和方法一起使用。本文将详细讲解Java super关键字的用法。
访问父类的属性和方法
子类继承父类后,可以访问到父类的公共(public)属性和方法。如果父类和子类定义了同名的属性和方法,那么子类访问的会是自己的属性和方法,父类的属性和方法会被隐藏。
子类使用super关键字,可以访问到父类的公共属性和方法,即使父类和子类定义了同名的属性和方法也一样。
访问父类的属性
子类使用super关键字可以访问到父类的公共属性,如下所示:
public class Animal {
protected int age;
public Animal(int age) {
this.age = age;
}
}
public class Bird extends Animal {
private String color;
public Bird(int age, String color) {
super(age); // 父类的构造器
this.color = color;
}
public void printAge() {
System.out.println(super.age); // 访问父类的属性
}
}
在Bird类中,使用super.age可以访问到父类Animal的age属性。
访问父类的方法
子类使用super关键字可以访问到父类的公共方法,如下所示:
public class Animal {
protected void sing() {
System.out.println("Animal is singing");
}
}
public class Bird extends Animal {
private String color;
public void sing() {
System.out.println("Bird is singing");
super.sing(); // 调用父类的方法
}
}
在Bird类中,使用super.sing()可以调用父类Animal的sing()方法。
调用父类的构造器
子类的构造器中默认会调用父类的无参构造器,如果父类没有提供无参构造器,子类必须手动调用父类的构造器。在Java中,使用super关键字可以调用父类的构造器。
在构造器中调用父类的构造器
子类的构造器中使用super关键字可以调用父类的构造器,如下所示:
public class Animal {
protected int age;
public Animal(int age) {
this.age = age;
}
}
public class Bird extends Animal {
private String color;
public Bird(int age, String color) {
super(age); // 调用父类的构造器
this.color = color;
}
}
在Bird类的构造器中,使用super(age)调用父类Animal的构造器。这里注意,调用父类的构造器必须放在子类的构造器中的第一行。
示例说明
示例1
下面的示例代码展示了如何使用super关键字访问父类的属性和方法:
public class Animal {
protected int age;
public Animal(int age) {
this.age = age;
}
public void sing() {
System.out.println("Animal is singing");
}
}
public class Bird extends Animal {
private String color;
public Bird(int age, String color) {
super(age); // 调用父类的构造器
this.color = color;
}
public void printAge() {
System.out.println(super.age); // 访问父类的属性
}
public void sing() {
System.out.println("Bird is singing");
super.sing(); // 调用父类的方法
}
}
public class Main {
public static void main(String[] args) {
Bird bird = new Bird(3, "red");
bird.printAge(); // 访问父类的属性
bird.sing(); // 调用父类和子类的方法
}
}
上面的示例代码中,演示了如何使用super关键字访问父类的属性和方法。
示例2
下面的示例代码展示了如何使用super关键字调用父类的构造器:
public class Animal {
protected int age;
public Animal(int age) {
this.age = age;
}
}
public class Bird extends Animal {
private String color;
public Bird(int age, String color) {
super(age); // 调用父类的构造器
this.color = color;
}
}
public class Main {
public static void main(String[] args) {
Bird bird = new Bird(3, "red");
}
}
上面的示例代码中,演示了如何使用super关键字调用父类的构造器。
总结
Java super关键字有访问父类的属性和方法、调用父类构造器的作用,它可以让子类使用父类的属性和方法,保证程序的可扩展性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java super关键字的用法详解 - Python技术站