Java super的使用方法

简介: Java super的使用方法

在Java编程中,super关键字是一个引用变量,它用于从子类访问父类的成员(包括变量、方法和构造器)。super关键字在Java的面向对象编程中扮演着重要的角色,它帮助我们实现继承机制,并在需要时引用父类的特定成员。


一、super关键字的用途

  1. 访问父类的成员变量
    当子类中的成员变量与父类中的成员变量名称相同时,可以使用super关键字来访问父类的成员变量。
    java复制代码
class Parent {
int value = 10;
}
class Child extends Parent {
int value = 20;
void displayValue() {
System.out.println("Parent's value: " + super.value); // 访问父类的value
System.out.println("Child's value: " + this.value); // 访问子类的value
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.displayValue(); // 输出: Parent's value: 10, Child's value: 20
}
}


  1. 调用父类的方法
    当子类重写了父类的方法时,可以使用super关键字来调用父类中被重写的方法。
    java复制代码
class Parent {
void display() {
System.out.println("Parent's display method");
}
}
class Child extends Parent {
@Override
void display() {
super.display(); // 调用父类的display方法
System.out.println("Child's display method");
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.display(); // 输出: Parent's display method, Child's display method
}
}


  1. 调用父类的构造器
    在子类的构造器中,可以使用super()来调用父类的构造器。如果没有显式地调用父类的构造器,编译器会自动插入一个对父类无参构造器的调用。但是,如果父类没有无参构造器,并且子类没有显式地调用父类的构造器,那么编译时将会报错。
    java复制代码
class Parent {
Parent(String message) {
System.out.println("Parent constructor: " + message);
}
}
class Child extends Parent {
Child(String message) {
super(message); // 调用父类的构造器
System.out.println("Child constructor");
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child("Hello from Main"); // 输出: Parent constructor: Hello from Main, Child constructor
}
}


二、注意事项
super关键字只能在子类中使用,表示对父类对象的引用。
在子类的构造器中,super()必须作为第一条语句出现(如果需要调用父类的构造器)。
如果父类有带参数的构造器而没有无参构造器,子类在创建对象时必须显式地调用父类的构造器。
super关键字不能用于访问父类的静态成员(静态变量和静态方法),因为静态成员属于类本身,而非类的实例。


三、总结
super关键字在Java中是一个强大的工具,它允许我们从子类访问父类的成员变量、方法和构造器。正确地使用super关键字可以帮助我们更好地理解和实现Java的继承机制,从而提高代码的可读性和可维护性。在编写继承关系的代码时,合理地使用super关键字是非常重要的。

相关文章
|
2月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
157 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
1月前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
|
2月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
144 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
2月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
39 0
|
3月前
|
Java 开发者
【Java编程新纪元】JDK 22:超级构造函数来袭,super(...) 前导语句改写编程规则!
【9月更文挑战第6天】JDK 22的超级构造函数特性是Java编程语言发展史上的一个重要里程碑。它不仅简化了代码编写,还提升了代码的可读性和维护性。我们有理由相信,在未来的Java版本中,还将有更多令人兴奋的新特性等待我们去发现和应用。让我们共同期待Java编程新纪元的到来!
|
4月前
|
JavaScript Java C#
Java中var的使用方法
这篇文章主要介绍了Java中自JDK10起引入的新特性`var`,这是一种局部变量类型推断功能,旨在简化代码书写并提升开发效率。通过示例展示了如何使用`var`定义不同类型的变量,包括基本数据类型及集合类。作者还特别强调了在使用`var`时的一些限制与注意事项,比如无法定义未初始化的变量、不适用于类成员变量以及不可作为方法参数等。最后,文章指出虽然`var`能带来便利,但也可能影响代码的可读性,建议开发者根据实际情况合理使用。
110 2
|
4月前
|
Java
【Java基础面试四十六】、 List<? super T>和List<? extends T>有什么区别?
这篇文章阐述了Java泛型中的List<? super T>和List<? extends T>的区别,解释了通配符的使用规则,以及Java泛型设计原则确保了编译时无警告则运行时无ClassCastException异常。
|
5月前
|
算法 Java API
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
|
6月前
|
IDE Java 程序员
Lombok使用方法和总结
Lombok使用方法和总结
|
6月前
|
JSON IDE Java
Java反射详解:核心概念、使用方法与实际应用
Java反射详解:核心概念、使用方法与实际应用
87 2
下一篇
DataWorks