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

精通 Java 方法重写:实战示例、核心规则与 super 关键字

精通 Java 方法重写

通过实战示例、关键规则和强大的 super 关键字,深入探索 Java 方法重写。

上周我们讲了继承 —— 这一 OOP 核心特性让子类继承父类的属性和行为。现在深入方法重写 —— 子类为父类已定义的方法提供自己的实现。

示例 1:基础方法重写

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

输出:

I am a dog. 

此片段中,Animal 和 Dog 均声明 displayInfo()。当 Dog 实例调用它时,运行的是子类实现,演示了重写。

注意 @Override 注解。它告诉编译器该方法意在替换父类版本;若签名不匹配,编译器报错。虽非强制,但它是防止意外错误的最佳实践。

精通 Java 方法重写:实战示例、核心规则与 super 关键字

Java 重写规则

使用 super 调用父类方法

重写后还能调用父类方法吗?完全可以 —— 使用 super 关键字。

示例 2:利用 super

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

输出:

I am an animal. I am a dog. 

此处 Dog 先通过 super 调用 Animal.displayInfo(),再添加自己的消息。

记住,构造器不被继承,所以不存在“构造器重写”。但子类可用 super() 调用父类构造器 —— 详见 Java super 关键字 指南。

重写时的访问级别

重写方法的可见性可以不同,但只能扩大访问权限。

若父类方法是 protected,子类可声明为 protected 或 public,但不能是 private。

示例 3:改变可见性

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

输出:

I am a dog. 

因为 public 比 protected 提供更宽访问,重写合法。

重写抽象方法

抽象类常声明无方法体的方法。任何具体子类必须提供实现,否则编译器报错。我们将在后续教程深入讲解抽象类。

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. 精通 Java 接口:概念、实现与最佳实践
  3. 精通 Java Try-With-Resources:自动资源管理详解
  4. Java 注解详解:类型、放置位置与实战示例
  5. Java 注解类型完全指南:预定义、自定义与元注解
  6. Java String length() 方法:获取字符串长度(示例)
  7. 精通 Java String.indexOf():定位子字符串与实战示例
  8. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  9. 精通 Java String compareTo():语法、用例与实战示例
  10. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  11. 精通 Java String.endsWith():检查字符串后缀(示例)
  12. Java 字符串替换大全:replace()、replaceAll() 与 replaceFirst() 详解