函数的两个特性(重写和重载)

C++中重载和重写的区别 重载和重写对于C++来说是非常重要的概念,面向对象程序设计,会用这两个操作,你的代码会优雅很多。以前刚出道,不会重载,所以不断的想函数名称,绞尽脑汁,导致代码逻辑混乱而且前脚刚写完后脚就忘记了,说明代码功底不好也影响了整个项目。 如果面试C++工程师,重载和重写的区别很频繁被问到。我建议这么简单回答即可:重载是指同名函数参数的类型,个数,顺序不同,根据参数列表决定调用哪个函数,函数的返回类型不关心。而重写是子类中实例化virtual修饰定义的函数,只有函数体不同,其他完全一样。如果往深... 阅读详情

函数的两个特性(重写和重载)

第一部分

1、重载的概念

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。换句话说重载和参数列表有关系,与返回值类型没有关系;

2、重载的特点

与返回值类型无关,只看参数列表。

3、重载的好处

方便于阅读,优化了程序设计。

4、什么时候使用重载

当定义的功能相同,但是参与运算的位置内容不同,那么这时就要定义一个函数名称以表示其功能,方便阅读而通过参数列表的不同来区分多个同名函数;

5、代码体现

class  FunctionOverload
{
	public static void main(String[] args) 
	{
//		函数名相同但是参数列表不同;这就是重载
		add(5,7);
		add(3,5,54);
		System.out.println("Hello World!");
	}
//	获取两个整数的和
	public static int add(int a,int b)
	{
		return a+b;
	}
//	获取三个整数的和
	public static int add(int a,int b,int c)
	{
		return a+b+c;
	}

}<strong>
</strong>

第二部分

1、背景

当子类中的方法名和父类中方法名是一样的时候,在主函数中创建子类对象,并调用父类的方法的时候,这是发现运算的结果是子类中的方法,父类中的方法并没有运行;

2、重写的概念

当子类出现和父类一模一样的函数时,子类中的对象调用该函数,会运行子类函数的内容,如同父类的函数被覆盖一样,这种情况就是函数的另一个特性:重写又成为覆盖;

3、覆盖的应用

当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时就没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容。

4、覆盖的特点

沿袭父类内容,定义子类特有内容;

5、覆盖功能的好处

5.1、有利于功能扩展;

5.2、在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。

5.3、父类中的私有方法不可以被覆盖。

6、覆盖的注意事项

6.1、子类覆盖父类时,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
6.2、静态只能覆盖静态,静态不能覆盖非静态,原因是静态在内存中是先加载的,而非静态是后加载进内存的;

7、代码体现

class Fu
{
	void show()
	{
		System.out.println("show fu");
	}
	void speak()
	{
		System.out.println("vb");
	}
}
//子类继承父类,通过覆盖后子类中就有了两个方法;
class Zi extends Fu
{
//	子类和父类speak的功能是相同的
	void speak()
	{
		System.out.println("java");
	}
	void show()
	{
		System.out.println("show zi");
	}
}
class ExtendsDemo3 
{
	public static void main(String[] args) 
	{
//		建立子类对象,调用父类方法;
		Zi z = new Zi();
		z.show();
		z.speak();
	}
}<strong>
</strong>

 

第三部分

重载和重写的区别

重载:只看同名函数的参数列表;
重写:子父类方法要一模一样,包括返回值类型;

第四部分

我的总结

1、重写是函数名相同,但是函数的参数列表不同,与返回值类型无关;
2、重载是子类和父类中的方法相同,子类中的方法覆盖父类中的方法,沿袭父类功能到子类中,在主函数中建立子类对象,调用父类方法;
3、在进行复写是时候,必须保证子类的修饰符权限要大于父类的修饰符权限,才能够复写;
4、静态只能覆盖静态,静态不能覆盖非静态;
【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记 一、绪论 1.1 引言 光纤传感器的优点:跟电子传感器相比较,光纤传感器有诸多独特的优势:对电磁干扰免疫;具有很好的绝缘性和耐腐蚀性;灵敏度高,可测量微弱信息;可实现大范围监测和分布式传感,仅需一根传感光纤,更为经济便捷;传感光纤体积小、重量轻、可形变,适用于一些特殊应用场所;还有无需供电、耐高温、便于组网等等优点 光纤传感器的感知信号的方法:当探测光入射到光纤中时会发生散射并产生各种散射光... 阅读详情

相关推荐

IBTrACS v04r01 数据提取实战:Pandas 筛选 JTWC/CMA/JMA 3机构最佳路径数据

本文详细介绍了如何使用 Pandas 高效提取和处理 IBTrACS v04r01 数据集中的最佳路径数据,特别针对 JTWC、CMA 和 JMA 三家权威机构的数据进行对比分析。通过构建可复用的数据提取函数,解决多机构数据质量差异问题,并提供高级分析与可视化应用示例,助力热带气旋研究。

clijovtbq401783153的博客 517

什么是函数重载?作用是什么?如何使用?

根据传入的参数类型、数量或顺序的不同,编译器可以区分调用哪个函数。方便用户调用:函数重载可以根据不同的参数选择最匹配的函数进行调用,使用户能够更方便地使用函数,并且无需记忆多个不同的函数名。通过传入不同类型的参数,编译器会自动选择匹配的函数进行调用,从而实现函数重载的效果。提高代码的可读性和可维护性:通过使用相同的函数名来表示功能相似但参数不同的函数,可以减少命名冲突,使代码更加清晰易懂。优化代码结构:通过函数重载,可以将功能相似的代码集中在同一个函数名下,降低了代码的重复性,提高了代码的重用性。

dxn16638400024的博客 2326

用Verilog手把手教你搭建一个5级流水线的MIPS CPU(附完整代码与仿真)

本文详细介绍了如何使用Verilog从零构建一个5级流水线的MIPS处理器,包括开发环境配置、核心模块实现、流水线冲突处理等关键技术。通过完整的代码示例和仿真方法,帮助读者掌握CPU设计的基本原理和实践技巧,特别适合想要入门处理器设计的工程师和学习者。

weixin_30613727的博客 464

C语言 函数的封装示例(允许存在同名但形参不同函数)

#include <stdio.h> long TailRescuvie(long n, long a) { return (n == 1) ? a : TailRescuvie(n - 1, a * n); } long TailRescuvie(long n) {//封装用的 return (n == 0) ? 1 : TailRescuvie(n, 1); } int main() { int result = TailRescuvie(4);

Dontla的博客 5022

从镜头到像素:深入解析Camera、Sensor与V4L2的协同工作流

本文深入解析了摄像头从物理成像到软件控制的完整工作流。详细介绍了镜头、传感器(Sensor)与V4L2框架的协同机制,涵盖光电转换、同步信号、ISP图像处理等核心环节,并通过实战演示了如何使用v4l2-ctl工具进行调试,为嵌入式开发和驱动调试提供系统指南。

weixin_29230805的博客 390

UltraScale系列底层结构(3)——URAM概述

在UltraScale+™ 器件中,除了我们在常规熟悉的BRAM资源以外,还额外提供了URAM(UltraRAM)资源。 UltraRAM 是一种单时钟同步操作的高密度存储器,每个 UltraRAM 块可存储 288 Kb 数据,配置为 4K x 72 位的存储单元,其容量是 Block RAM 的八倍。虽然 UltraRAM 内部使用单端口存储单元,但通过在一个时钟周期内顺序执行端口 A 和端口 B 的操作,实现了双端口功能。

apple_53311083的博客 2841

python函数

python函数的应用

生而无畏,战至终章 1406

机器人全局路线规划导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对全局路线规划导读做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1504

多态中虚函数同名参数不同

多态中虚函数同名但参数不同

watson_pillow的博客 576

基于Gurobi的综合能源系统运行优化:鲁棒两阶段优化方法

本文提出了一种基于Gurobi的综合能源系统鲁棒两阶段优化方法,针对包含换电站、光伏发电和电池储能的系统运行问题。研究采用多面体不确定性集合描述光伏出力随机性,构建了考虑电池衰减成本和弃光惩罚的两阶段优化模型:第一阶段制定日前调度计划,第二阶段处理实时运行中的不确定性。通过列与约束生成算法求解模型,并使用Python和Gurobi实现。仿真验证了该方法能有效平衡系统经济性与鲁棒性,为含高比例可再生能源的综合能源系统运行提供了实用解决方案。

huanghm88的专栏 242

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3242

深入理解C++函数重载:让函数更灵活、更强大

函数重载(Function Overloading)是C++中一项非常有用的特性,它允许在同一作用域内定义多个函数名相同但参数不同的函数。通过函数重载,程序可以根据调用时传递的参数来自动选择最合适的函数。这极大地提高了代码的灵活性、可读性和复用性.

qq_55764125的博客 1446

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++三大特性- - -多态(虚函数、重载、重写和重定义)

文章目录多态1. 多态的定义及实现1.1 多态构成条件1.2 虚函数1.3 虚函数的重写1.4 c++11中的 override 和 final1.5 重载、覆盖(重写)、隐藏(重定义)的区别2、抽象类2.1 纯虚函数2.2 接口继承和实现继承3、多态的原理3.1 虚函数表 多态 多态:通俗说就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 1. 多态的定义及实现 1.1 多态构成条件 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了P

qq_42433334的博客 1563

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++和Java在 子类继承父类时,两者成员函数重写和重载的特性

一. Java的子类父类间,同名函数重写、重载 A.java package testpkg; public class A { public void func(int a){ System.out.println("A:func(int )"); } public void func(){ System.out.println("A:func()"); } } B

霖林烟雨 4817

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++面向对象,面向对象的三大特性,重载,重写,隐藏区别,什么是多态,多态如何实现(虚函数表和虚指针)

什么是面向对象?面向对象的三大特性 面向对象:对象是指具体的某一个事务,这些事务的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。 面向对象的三大特性: 封装:将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。 继承:子类继承父类的特征和行为,子类有父类的非private方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性,但是当父类中的成员变量,成员函数或者类本身被final关键字修饰时,修饰的类不能继承,修饰的成员不能重写或修改。 多态:多态就是不同继承类的

qq_36553387的博客 675

C++:重载与重写

是面向对象编程中的一个重要概念,允许在同一个作用域内定义多个同名的函数或运算符,但它们的参数列表必须不同。重载可以提高代码的可读性和灵活性,使得同一个函数名或运算符可以用于不同类型或数量的参数。

weixin_53442127的博客 1428

C++的重载、隐藏和重写

学习c++过程中,我们必须对重载、隐藏和重写的特性进行了解并且对他们进行区分。那么我们首先来了解重载的概念。在相同作用域中,当有几个函数名相同,参数不同的函数我们称为重载。例如下面的代码: class Base { public: Base(); virtual ~Base(); void fun(int); void fun(string); }; Base::Base() { //

CODE生活的博客 949

重写和重载有什么区别

面向对象的三大特性:继承多态封装 重写和重载有什么区别是面试中经常遇到的一个问题 重载(overLoading) 方法重载就是让类用统一的方式处理不同类型的数据的一种手段,多个同名函数同时存在,具有不同的参数个数和类型。返回值的类型可以相同也可以不相同,无法以返回值的类型作为从在函数的区分,可以抛出不同的异常,调用方法的时候,通过传递给他们不同的参数个数和参数类型来决定具体使用哪个方法,是一个类中...

qq_41174684的博客 2641

PHP中函数覆盖和函数重载

函数重载和覆盖(也叫重写)是PHP中的OOP(面向对象)特性。在函数重载中,多个函数可以具有相同的方法名但参数的数量或类型不同。但是在函数重写的情况下,多个函数将具有相同的方法名和参数数量。 函数重载: 函数重载包含相同的函数名称,该函数根据参数的数量和类型执行不同的任务。在PHP中,函数重载是在魔术方法__call()的帮助下完成的。此函数采用函数名称和参数。函数重载: &lt;?php...

qq_41028544的博客 1450

C++之函数重载,重写,重定义

重载和重定义 函数重载是指函数名相同,但是参数不同的函数之间的关系。函数重载发生在同一个类内。 派生类和父类同名但不同参的函数之间不是重载关系,它们之间的关系是重定义。 重写 重写有个首要条件,那就是必须是基类的函数是虚函数,子类才能叫做重写父类的虚函数。 下面给段代码来说明一下. #include<iostream> using std::cout; using st...

zy010101博客 572

C++--函数重载、重写、重定义

C++中经常会提到重载,除了重载,还有重写,重定义,下面对这三个概念逐一进行区分 1 重载   函数重载是同一定义域中(即同一个类中)的同名函数,但形参的个数必须不同,包括参数个数,类型和顺序,不能仅通过返回值类型的不同来重载函数 #include using namespace std; class BOX { void func(int a, int b, int c){} void func...

huhuolianmeng的博客 469

函数的重载、重写和重定义简述(c/c++知识篇)

1.函数重载(Function Overloading) 1、什么是函数重载 在同一个类中(同一个作用域中/在类的内部),存在一组函数名相同,函数的参数列表不同(参数的个数、类型、顺序),函数有无 virtual 关键字都可以,我们把这组函数称为函数重载。 2、为什么使用函数重载(函数重载的好处 由于函数重载可以在同一个作用域内,使用同一个函数名 命名一组功能相似的函数,这样做减少了函数名的数量,避免了程序员因给函数名命名所带来的烦恼,从而提高程序的开发的效率。 3、函数重载的条件 1 必须在同一

栋哥修炼日记 1万+

python中函数重载和重写

python 中的重载  在python中,具有重载的思想却没有重载的概念。所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能。实际上python编程中具有重载的目的缺无重载的行为,或者说是python并不需要重载!  python是一门动态语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,python没有必要去考虑参数的类型问题...

weixin_30337157的博客 556

java :引用类型的转换  方法重载和重写  构造函数 修饰符

引用类型的转换: 1.子类自动转换成父类的对象。 2.父类的对象需要强制转换才能变成子类对象。但是只有父类的引用指向子类对象的时候才能强转成功的.4.在强制类型转换前要用instanceof来判断一个对象的类型方法重载:(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2) Jav

w124374860的专栏 774
上一篇: Singleton模式(单例模式)饿汉式和懒汉式
下一篇: 模版方法设计模式
fyldragonfyl
博客等级 码龄12年 9粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值