博客
关于我
Java重写override
阅读量:356 次
发布时间:2019-03-04

本文共 1008 字,大约阅读时间需要 3 分钟。

Java方法重写与覆盖详解

1. 方法重写(OVERRIDE)解析

在Java编程中,方法重写是子类对父类中的方法进行修改或完全重新实现的过程。这种机制允许子类在不改变方法签名的情况下,提供不同的实现方式。

方法重写的核心要点

  • 方法名和参数列表必须完全一致:这是判断是否为重写的关键依据。
  • 返回值类型和声明的异常类型必须小于或等于父类方法:子类方法的返回值类型或异常类型不能比父类更宽泛。
  • 访问修饰符的限制必须大于或等于父类方法:子类方法的访问级别不能低于父类。

方法重写示例

public class Vehicle {    public void run() {        System.out.println("跑....");    }    public void stop() {        System.out.println("停止!");    }    public Person whoIsPsg() {        return new Person();    }}public class Horse extends Vehicle {    public void run() {        System.out.println("四蹄翻飞,嘚嘚的。。");    }    public Student whoIsPsg() {        return new Student();    }}

在上述示例中,Horse类对父类Vehicle中的run()方法进行了重写,并保持了与父类相同的方法签名和访问修饰符。

2. 方法覆盖(Overloading)与重写的区别

方法覆盖

方法覆盖是指在同一个类中定义多个方法,参数列表虽然不同,但方法名相同。这种机制允许多个方法共享相同的名称,但参数类型不同。

方法重写

方法重写则是子类对父类中的方法进行修改或完全替代实现,要求方法名、参数列表必须完全一致。

3. 方法重写的限制

  • 子类方法的返回类型必须是父类方法返回类型的子类。
  • 子类方法抛出的异常类型必须是父类方法异常类型的子类。
  • 子类方法的访问修饰符必须大于或等于父类方法。

4. 总结

方法重写是Java面向对象编程的重要特性之一。它允许子类在不改变方法签名的情况下,提供更具体的实现。理解方法覆盖与重写的区别,以及掌握重写的规则,是掌握Java编程的关键环节。

转载地址:http://xkzr.baihongyu.com/

你可能感兴趣的文章
npm和package.json那些不为常人所知的小秘密
查看>>
npm和yarn清理缓存命令
查看>>
npm和yarn的使用对比
查看>>
npm如何清空缓存并重新打包?
查看>>
npm学习(十一)之package-lock.json
查看>>
npm安装 出现 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! 解决方法
查看>>
npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
查看>>
npm安装教程
查看>>
npm报错Cannot find module ‘webpack‘ Require stack
查看>>
npm报错Failed at the node-sass@4.14.1 postinstall script
查看>>
npm报错fatal: Could not read from remote repository
查看>>
npm报错File to import not found or unreadable: @/assets/styles/global.scss.
查看>>
npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
查看>>
npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
查看>>
npm版本过高问题
查看>>
npm的“--force“和“--legacy-peer-deps“参数
查看>>
npm的安装和更新---npm工作笔记002
查看>>
npm的常用配置项---npm工作笔记004
查看>>
npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
查看>>
npm编译报错You may need an additional loader to handle the result of these loaders
查看>>