[JAVA]重写

news/2024/11/24 11:33:40/

1.重写的概念

重写,也被称为覆盖。重写是子类对父类的非静态,非private修饰,非final修饰,非构造的方法实现过程的重新编写。子类重写的方法的参数和返回值类型与父类的方法相同

2.方法重写的规则

  • 子类重写的方法与父类的参数和返回值类型一致
  • 子类中重写后的方法修饰符范围不能小于父类方法的修饰符 (eg:父类方法被public修饰,当父类实现多态,动态绑定的过程中,如果子类被protected修饰。那么在可以调用父类public的环境下,就可能会对子类调用失败。)
  • 父类的静态方法和构造方法不能被重写
  • 重写的方法, 可以使用 @Override 注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写
class Animal{private String name;private int age;public void eat(){System.out.println("吃东西");}public void voice(){System.out.println("一般声音");}
}class Cat extends Animal{@Override            //子类Cat对父类Animal的eat方法的重写public void eat() {System.out.println("吃小鱼干");}@Override            //子类Cat对父类Animal的voic方法的重写public void voice() {System.out.println("喵喵喵");}
}class Dog extends Animal{@Override            //子类Dog对父类Animal的eat方法的重写public void eat() {System.out.println("啃骨头");}@Override            //子类Dog对父类Animal的voic方法的重写public void voice() {System.out.println("汪汪汪");}
}

3.重写与重载的区别

  • 对于参数,重写不能改变原有的参数的任何,重载可以修改方法的参数
  • 对于返回值类型,重写不能修改方法的返回值类型,重载可以修改返回值类型
  • 对于修饰符,重写的子类的修饰符一定不能小于父类的修饰符,重载不做要求

4.静态绑定和动态绑定 

静态绑定:也称为‘早绑定’,即我们可以根据方法的参数决定具体调用哪一个方法。像是重载(因为重载的一个参考点是‘参数’,就算方法名相同,我们可以根据相同方法名中传参类型的不同来确定是具体调用哪一个方法)

动态绑定:也称为‘晚绑定’,即我们不能根据方法的参数类型来确定具体调用哪一个方法,直到参数中的引用具体调用对象后,我们才知道具体调用了哪一个方法。像是重写


http://www.ppmy.cn/news/37364.html

相关文章

让PyTorch训练速度更快,你需要掌握这17种方法

掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。近日,Reddit 上一个帖子热度爆表。主题内容是关于怎样加速 PyTorch 训练。原文作者是来自苏黎世联邦理工学院的计算机科学硕士生 LORENZ KUHN,文章向我们介绍了在…

python外篇(内存泄露)

目录 了解 循环引用造成的内存泄露 大量创建对象造成的内存泄漏 全局对象造成的内存泄露 不适当缓存造成的内存泄露 内存分析工具 了解 ### 以下为Python中可能会出现内存泄露的情况: (1) 循环引用:当两个或多个对象相互引用,造成…

JVM 堆

堆的核心概述 堆与进程 1 堆针对一个JVM进程来说是唯一的,一个进程只有一个JVM实例,一个JVM实例中就有一个运行时数据区,一个运行时数据区只有一个推和一个方法区。 2进程包含多个进程,他们是共享一个堆空间的。 3Java堆在JVM启动…

让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

让你的作品更出色—— 词云Word Cloud的制作方法(基于python) 本文目录: 一、词云的简介 二、 实现原理和流程 1、制作词云流程图 2、词云实现原理 三、 实现词云的方式 1、安装词云相关模块库 2、WordCloud库 3、stylecloud库 四、总结 一、词…

USB键盘实现——设备描述符(一)

文章目录设备描述符仓库地址获取设备描述符请求标准设备请求USB 控制端点收到的数据设备描述符返回设备描述符实现设备描述符数据设备描述符分析附 STM32 枚举日志设备描述符 设备描述符内容解析和 HID鼠标 一致。 仓库地址 仓库地址 获取设备描述符请求 标准设备请求 ty…

ROS开发环境搭建(Ubuntu22.04、ROS2 Humble)

1.ROS环境搭建简介 官方指导地址:http://docs.ros.org/ 笔者是2023年4月初开始学习ROS,本文为当时的过程记录。其他情况不在此文中表述。 上图是官方文档首页,秉持“要学就学新的”和“接受官方推荐” 原则。故选择Humble版本。 在安装指导…

【新】(2023Q2模拟题JAVA)华为OD机试 - 统计差异值大于相似值二元组个数

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:统计差异值大于相似值二元组个…

python--选择分支结构

if else 条件语句 if else语句对条件进行判断,然后执行不同的代码,这称为选择结构或分支结构。 if 表达式:代码块if 表达式:代码块1 else:代码块2if 表达式1:代码块1 elif 表达式2:代码块2 elif 表达式3:代码块3...... else:代码块n不管“表达式”的结…