当前位置: 首页 > news >正文

Java 中的方法重写

在 Java 中,方法重写(Method Overriding)是面向对象编程的一个重要概念,它指的是子类中存在一个与父类中相同名称、相同参数列表和相同返回类型的方法。方法重写使得子类可以提供特定的实现,从而覆盖(或改变)父类中已有的方法行为。

### 方法重写的基本规则:

1. **方法签名**:
   - 子类重写的方法必须具有与父类中被重写的方法相同的方法名、参数列表(参数类型和参数个数)以及返回类型。

2. **访问权限**:
   - 子类中重写的方法不能拥有比父类中被重写的方法更严格的访问权限。

3. **返回类型**:
   - 子类重写的方法返回类型必须与父类中被重写的方法返回类型相同,或者是其子类型(协变返回类型)。

4. **异常**:
   - 子类重写的方法抛出的异常不能比父类中被重写的方法声明的异常更宽泛。

5. **构造器**:
   - 构造器不能被重写,因为构造器的名称与类名相同,而子类不能与父类有相同的名称。

6. **静态方法**:
   - 静态方法不能被重写,但可以被隐藏(静态方法的隐藏是指子类中的静态方法与父类的静态方法具有相同的名称和参数列表)。

### 方法重写的例子:

```java
class Animal {public void makeSound() {System.out.println("Some sound");}
}class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Bark");}
}public class Test {public static void main(String[] args) {Animal myDog = new Dog();myDog.makeSound(); // 输出 "Bark"}
}
```

在这个例子中,`Dog` 类重写了 `Animal` 类中的 `makeSound` 方法。当我们创建 `Dog` 类的实例并通过 `Animal` 类的引用调用 `makeSound` 方法时,实际调用的是 `Dog` 类中重写的方法。

### 使用 `@Override` 注解:

- Java 提供了 `@Override` 注解,用于明确表示一个方法是重写了父类的方法。如果方法没有正确地重写父类的方法,编译器会报错。

### 方法重写的目的:

- 方法重写的主要目的是为了实现多态性(Polymorphism),允许通过父类的引用调用子类的方法,从而使得同一个方法调用具有不同的行为。
- 它还允许子类根据需要改变父类方法的行为,以适应特定的实现需求。

方法重写是 Java 中实现多态性的关键机制之一,它使得代码更加灵活和可扩展。
 

http://www.lryc.cn/news/501508.html

相关文章:

  • v-for遍历多个el-popover;el-popover通过visible控制显隐;点击其他隐藏el-popover
  • 从 Excel 文件中读取数据生成 SQL 语句[快捷main方法]
  • 从0到1实现项目Docker编排部署
  • Vue框架入门
  • vue入门实战(二)父子组件显示,参数传递
  • 【Linux】Ubuntu:安装系统后配置
  • springboot-查看版本和版本所需JDK
  • fuxa搭建与使用(web组态)
  • 中间件--MongoDB部署及初始化js脚本(docker部署,docker-entrypoint-initdb.d,数据迁移,自动化部署)
  • C语言期末考试——常见考题(模拟考)
  • 流量过滤与路径转发控制
  • Ungoogled Chromium127编译指南 Windows篇 - 获取源码(七)
  • k8s 之 StatefulSet
  • iPhone 17 Air基本确认,3个大动作
  • 鸿蒙实现应用通知
  • ElasticSearch常见的索引_集群的备份与恢复方案
  • vue图片之放大、缩小、1:1、刷新、左切换、全屏、右切换、左旋咋、右旋转、x轴翻转、y轴翻转
  • Docker多架构镜像构建踩坑记
  • “pinn是无网格的”???
  • 换一个ip地址是什么意思?换一个网络ip地址会变吗
  • JavaWeb学习--cookie和session,实现登录的记住我和验证码功能
  • 深度学习:基于MindSpore的极简风大模型微调
  • 【LeetCode力扣热题100】【LeetCode 1】两数之和
  • 定制链接类名,两类跳转传参,vue路由重定向,404,模式设置
  • 【ArcGIS微课1000例】0135:自动生成标识码(长度不变,前面自动加0)
  • ISO45001职业健康安全管理体系认证流程
  • VueRouter路由
  • 性能测试攻略(一):需求分析
  • 【24年新算法时间序列预测】黑翅鸢BKA优化Transformer时间序列预测(评估指标全,出图多)
  • YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点