亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

精通 Java super 关键字:高级用法与实战示例

精通 Java super 关键字:高级用法与实战示例

探索 super 关键字如何在 Java 继承中解锁强大能力,配合清晰示例与专家指导。

super 关键字是 Java 继承模型的基石,允许子类引用其直接父类的成员 —— 字段、方法和构造器。理解其细微差别对编写整洁、可维护代码至关重要。


super 的主要用途

  1. 调用被重写的父类方法。
  2. 访问被子类字段遮蔽的父类字段。
  3. 从子类构造器显式调用父类构造器。

下面通过代码样本深入各场景。


1. 调用被重写的父类方法

子类重写方法时,父类版本仍可通过 super.methodName() 访问。这对在保留原功能基础上扩展行为至关重要。

示例:方法重写与 super

class Animal { public void display() { System.out.println("I am an animal"); } } class Dog extends Animal { @Override public void display() { System.out.println("I am a dog"); } public void printMessage() { display(); // 调用 Dog.display() super.display(); // 调用 Animal.display() } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.printMessage(); } } 

输出:

I am a dog I am an animal 

使用 super.display() 确保执行父类实现,适用于扩展而非替换功能的场景。


2. 访问被遮蔽的父类字段

若父类和子类声明同名字段,子类字段会遮蔽父类字段。super.fieldName 可引用原始字段。

示例:字段遮蔽

class Animal { protected String type = "animal"; } class Dog extends Animal { public String type = "mammal"; public void printType() { System.out.println("I am a " + type); // Dog.type System.out.println("I am an " + super.type); // Animal.type } } public class Main { public static void main(String[] args) { Dog dog = new Dog(); dog.printType(); } } 

输出:

I am a mammal I am an animal 

3. 使用 super() 调用父类构造器

构造器不被继承,但子类可用 super() 调用父类构造器。这必须是子类构造器的第一条语句,且在父类无无参构造器或需传参时必须显式调用。

示例 1:默认构造器调用

class Animal { Animal() { System.out.println("I am an animal"); } } class Dog extends Animal { Dog() { super(); System.out.println("I am a dog"); } } public class Main { public static void main(String[] args) { new Dog(); } } 

输出:

I am an animal I am a dog 

示例 2:带参构造器调用

class Animal { Animal(String type) { System.out.println("Type: " + type); } } class Dog extends Animal { Dog() { super("Animal"); System.out.println("I am a dog"); } } public class Main { public static void main(String[] args) { new Dog(); } } 

输出:

Type: Animal I am a dog 

带参情况下,编译器无法自动调用非默认构造器,故 super(arguments) 强制要求。


精通 super 关键字能让你编写健壮的继承体系,确保重写逻辑可访问且构造器正确初始化。这些技术对可扩展的 Java 应用至关重要,符合行业专家推荐的最佳实践。

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. Java 注释:类型、用法与最佳实践
  3. 精通 Java if…else:控制流全解析
  4. 精通 Java 增强 for 循环:语法、示例与最佳实践
  5. Java break 语句:用法、时机与标签 break 详解
  6. 精通 Java 字符串:创建、方法与最佳实践
  7. 精通 Java 接口:概念、实现与最佳实践
  8. 精通 Java 匿名内部类:定义、语法与实战示例
  9. 精通 Java Try-With-Resources:自动资源管理详解
  10. Java 注解详解:类型、放置位置与实战示例
  11. Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
  12. 深入理解 Java Vector:用法、特性及与 ArrayList 的对比