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关键字是非常重要的。

相关文章
|
5天前
|
Java Maven Python
技术笔记:Lombok介绍、使用方法和总结
技术笔记:Lombok介绍、使用方法和总结
|
6天前
|
IDE Java 程序员
Lombok使用方法和总结
Lombok使用方法和总结
|
18天前
|
JSON IDE Java
Java反射详解:核心概念、使用方法与实际应用
Java反射详解:核心概念、使用方法与实际应用
35 2
|
20天前
|
Java 编译器
Java基础5-一文了解final关键字的特性、使用方法,以及实现原理(二)
Java基础5-一文了解final关键字的特性、使用方法,以及实现原理(二)
12 0
Java基础5-一文了解final关键字的特性、使用方法,以及实现原理(二)
|
20天前
|
缓存 安全 Java
Java基础5-一文了解final关键字的特性、使用方法,以及实现原理(一)
Java基础5-一文了解final关键字的特性、使用方法,以及实现原理(一)
17 0
|
2月前
|
Java 编译器
【Java探索之旅】super 子类构造 掌握
【Java探索之旅】super 子类构造 掌握
16 0
|
2月前
|
Java
【JAVA学习之路 | 基础篇】super关键字
【JAVA学习之路 | 基础篇】super关键字
|
2月前
|
Java
深入了解 Java 方法和参数的使用方法
方法是一块仅在调用时运行的代码。您可以将数据(称为参数)传递到方法中。方法用于执行特定的操作,它们也被称为函数。
113 4
|
2月前
|
Java 程序员
类的继承和super,final关键字的使用(JAVA)
类的继承和super,final关键字的使用(JAVA)
37 0
|
2月前
|
Java
Java中的super关键字
Java中的super关键字
30 0