重载、重写、虚方法、抽象方法、隐藏方法小记---C#多态

C#——重载抽象方法 创建窗体程序,求圆球 圆锥 圆柱的体积,理解重载抽象方法的使用 设计界面: 编写代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; ... 阅读详情

重载、重写、虚方法、抽象方法、隐藏方法小记

【C#】

  • 重载:只有方法名相同
  • 重写:都相同:被重写的方法必须是虚方法,virtual
  • 虚方法:可以被重写的方法,virtual
  • 抽象方法:必须在派生类中重写的方法,abstract
  • 隐藏方法:派生类中定义的,同基类同名的方法,使用new关键字定义 :

技巧:
1、new可以隐藏基类虚方法或非虚方法;
2、隐藏方法中方法调用:
  a、引用为虚方法,实例或其父类重写虚方法,执行重写的方法。
  b、引用不为虚方法,直接调用引用方法;
3、重写方法调用看实例


重写方法:

代码块1

代码块语法遵循标准markdown代码,例如:

public class dad
{
    public virtual void print()
    {
        Console.WriteLine("调用dad的print方法");
    }
}
public class son : dad
{
    public override void print()
    {
        Console.WriteLine("调用son的print方法");
    }
}

调用1

dad d = new dad();
d.print();
son s = new son();
s.print();

dad ds = new son();
ds.print();

输出1

调用dad的print方法
调用son的print方法
调用son的print方法

隐藏方法:

代码块2

代码块语法遵循标准markdown代码,例如:

public class dad
{
    public void print()
    {
        Console.WriteLine("调用dad的print方法");
    }
}
public class son : dad
{
    public new void print()
    {
        Console.WriteLine("调用son的print方法");
    }
}

调用2

dad d = new dad();
d.print();
son s = new son();
s.print();

dad ds = new son();
ds.print();

输出2

调用dad的print方法
调用son的print方法
调用dad的print方法
Unity之C#学习笔记(8):虚函数,方法重写和方法隐藏 Virtual Methods, Override and New 前篇链接:Unity之C#学习笔记(7):类的继承 Inheritance 在这节,我们要重点讲解几个容易混淆的概念:虚函数,方法隐藏(New)和方法重写(Override)。 续接前篇,我们现在要解决的问题是:让基类和派生类同名同参的方法做出不同行为,也就是表现出“多态”(Polymorphism)。 Tips 1:在开始前,我们先把另一个名称很相似的概念解决掉:方法重载(Overload)。... 阅读详情

相关推荐

C#——重写与抽象类

概述前几天,看了一个电影叫《教父3》,教父其实就是黑帮老大,他的儿子继承了他的位置,成为新的教父。小教父和老教父干的活差不多,都是经营他们的大家族,但是小教父努力使他们经营的产业走向和非法化,这就是他和他父亲的区别。 这和我们学的重写很像,重写就是调用一个方法,实现不同的行为。详细介绍(重写)子类想用父类的方法,但是要做一些修改,这就用到了重写。 子类的方法名可以和父类的方法名重名,但是会出现一

韩丽萍 1468

虚方法、重写方法以及抽象类的知识小结

上个星期由于要优化一个公共方法,使用到了虚方法和重写,由于之前一直对OOP的一些概念不是很清楚,借这个机会好好学习一下。 C#中的多态性在实现时主要是通过在子类(派生类)中重写基类的虚方法或函数成员来实现的,那么这里就遇到两个概念,一个是虚方法,另一个是重写方法,而这两个方法也是多态中最重要的两个概念,下面分别对它们进行讲解。 1.虚方法 虚方法就是允许被其子类重新定义的方法,在声明时...

weixin_30709635的博客 202

瑞芯微RK3576上手实测:8nm新U配6TOPS NPU,做AIoT项目选它还是RK3588/RK3568?

本文深度评测瑞芯微RK3576芯片在中高端AIoT项目中的表现,对比RK3588和RK3568的性能差异。RK3576采用8nm工艺,配备6TOPS NPU,在解码能力、AI推理效率和功耗控制方面表现均衡,是中端项目的黄金选择。实测数据显示其在多路视频解码和AI加速性能上优势明显,特别适合智能摄像头和工业HMI设备。

weixin_42627853的博客 716

【C#】面向对象多态03--抽象方法重写

简单了解抽象类,抽象方法的重写概念与结构

ICD_kfg的博客 564

Open3D:Win10 + VS2017配置Open3D(C++、python)

一、下载源码 地址:https://github.com/intel-isl/Open3D 1.1 克隆源码【笔者的源码路径为D:\Open3D\Open3D】 1.2 切换版本【笔者的版本为0.8.0】 1.3 更新子模块【用于获取第三方库!很重要!】 二、CMake编译 2.1 设置路径 【source code: D:\Open3D\Open3D;build binaries: D:\Open3D】 【笔者设置CMAKE/CMAKE_INSTALL_PREFIX的路径为D:/Open.

累了就要打游戏 1万+

AutoCAD2014与ObjectARX开发环境搭建实战指南

本文提供了一份详细的AutoCAD2014与ObjectARX开发环境搭建实战指南。内容涵盖从AutoCAD2014、Visual Studio 2010及ObjectARX 2014 SDK的版本匹配与环境准备,到Wizard安装、编码问题解决、Visual Studio配置,并最终通过一个完整的绘图命令开发示例,手把手引导开发者创建并加载第一个可运行的ObjectARX插件,为后续深入开发奠定坚实基础。

weixin_28475533的博客 286

c# 运算符号 重载以及抽象类 抽象方法

目前我们学过的变量中,除了几种自定义的变量(结构体、类、枚举),语言本身的13种常用变量类型byte、int、float等等都默认支持用运算符进行计算,也支持条件运算符进行比较。可以重定义或重载c#中内置的运算符,其次,重载运算符是具有特殊名称的函数,是通过关键字operator后跟元素安抚的符号来定义的。总结:看过图片过后,我们可以发现,new在构建抽象类的时候会报错,并且子类不实现父类抽象方法时也会提示,除非子类时抽象类。4、实现由一个重写方法提供,此重写方法是非抽象类的成员。

Cantwritecodeli的博客 610

LabVIEW Modbus通讯实战:从安装库到读写寄存器的完整避坑指南

本文详细介绍了LabVIEW与Modbus通讯的完整实战指南,从安装库文件到读写寄存器的全流程操作,帮助开发者避开常见问题。通过虚拟串口配置、主机配置实战和高级调试技巧,提升工业自动化领域的通讯效率与可靠性。

milk8的博客 739

C# 方法重写

为什么需要重写 为了选择性复用,解决父类所定义方法在子类中不适用(虚方法),或父类没有实现(抽象方法),这样的方法子类可以重写。 方法重写有三种重写的方法 虚方法重写 重写方法重写 抽象方法重写 abstract 方法:在子类必须重写,除非子类也是抽象类 virtual 方法:在子类可以重写,父类方法的做法与子类不同 override方法:已经重写过的方法,在子类还可以继续重写,除非...

奋斗的菇凉的博客 4511

在没有信用卡的情况下怎么申请谷歌云(Google Cloud)?

这笔额度足够用来跑一台云服务器、部署小型网站,甚至可以尝试 AI、机器学习等项目。但问题来了——想要拿到这 300 美元,你必须先通过支付方式验证。默认选项就是绑定一张国际信用卡(Visa、MasterCard 之类),然而不少人没有信用卡,或者信用卡无法支持国际支付,结果就卡在注册第一步。很多人会疑惑:既然是送额度,为什么还要绑卡?原因其实很简单:谷歌需要确认你是真实用户,而不是批量注册薅羊毛;通过支付验证,后续如果你用完 300 美元额度,可以直接进行付费使用;

m0_74824483的博客 5652

gm/ID设计方法实践指南:从理论曲线到电路优化的关键步骤

本文详细介绍了gm/ID设计方法在模拟IC设计中的实践指南。该方法通过直接利用工艺模型数据,将设计焦点从盲目调整晶体管尺寸转向选择关键的gm/ID工作点,从而在先进工艺下实现功耗、增益和带宽等性能的精准权衡与优化。文章从理论曲线生成到具体电路设计步骤,提供了完整的实战流程。

pandas7gardener的博客 479

C#方法重写,抽象类,抽象方法

方法重写 顾名思义,方法重写就是要重写一些发法,不过不是手改代码,而是诸如子类中去“重写”父类的一个方法,让子类调用方法的时候调用到的是自己重写过的而非父类原有的方法。 格式是在方法的声明修饰词中,加一个override做修饰。 可被重写的方法有如下三类 虚方法:virtual 抽象方法:abstract 重写方法:override 抽象类 抽象类的概念:是由abstract修饰...

诡白丷的博客 2475

Python 爬虫实战:共享单车数据采集全流程与市场洞察深度剖析

本文介绍了如何利用Python爬虫技术获取和分析共享单车运营数据。文章从项目背景出发,详细阐述了系统架构设计,包括数据抓取、清洗存储、分析和可视化模块。通过Scrapy、BeautifulSoup等工具实现数据采集,使用Pandas进行数据清洗,并借助Matplotlib进行可视化分析。实战部分展示了爬虫代码示例和城市分布、使用频率等分析案例。最终指出数据驱动分析有助于了解行业现状和市场趋势,未来可结合机器学习等方法进行深入洞察。该技术方案为共享单车行业研究提供了有效的数据支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2232

c# 多态(重载overload、重写override、虚方法virtual、抽象方法abstract)

一、定义 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。 多态有下面概念:重载、重写、虚方法、抽象方法以及隐藏方法。 二、重载(overload) (1)方法名必须相同 (2)参数列表必须不相同 (3)返回值类型可以不相同 public void Sum() { int a = 1 + 1; } public void Sum(int input)...

预立数据科技 1636

深度学习注意力机制新突破:YOLOv8结合SimAM无参数注意力模块,让目标检测更精准!

在计算机视觉领域,注意力机制已成为提升模型性能的关键技术。然而,传统的注意力模块如SENet、CBAM等往往引入大量额外参数,增加了模型的复杂度和计算负担。本文介绍一种创新的无参数注意力机制——SimAM(Simple Parameter-Free Attention Module),并将其成功应用于YOLOv8目标检测框架。SimAM基于神经科学理论,通过定义能量函数为特征图计算3D注意力权重,无需任何额外参数即可显著提升模型性能。本文详细阐述了SimAM的理论基础、实现原理,并提供了完整的YOLOv8集

YOLO 97

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# 虚方法、重写方法和抽象方法

可使用虚方法、重写方法和抽象方法来定义类类型层次结构的行为。 由于类可从基类派生,因此这些派生类可能需要修改在基类中实现的行为。 虚方法是在基类中声明和实现的方法,其中任何派生类都可提供更具体的实现。 重写方法是在派生类中实现的方法,可修改基类实现的行为。 抽象方法是在基类中声明的方法,必须在所有派生类中重写。 事实上,抽象方法不在基类中定义实现。 对实例方法的方法调用可解析为基类或派生类实现。 变量的类型确定了其编译时类型。 编译时类型是编译器用于确定其成员的类型。 但是,可将变量分...

IT技术猿猴的博客 2094

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

虚方法、重写方法和抽象方法[转载]

若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚方法 (virtual method)。若其中没有 virtual 修饰符,则称该方法为非虚方法 (non-virtual method)。 在调用一个虚方法时,该调用所涉及的那个实例的运行时类型 (runtime type) 确定了要被调用的究竟是该方法的哪一个实现。在非虚方法调用中,实例的编译时类型 (compile-time...

weixin_34279579的博客 191

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

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

C#学习篇2:重载和重写 虚方法和抽象方法

本篇问转载文章,仅供学习使用。。。 重载(overload): 在同一个作用域(一般指一个类)的两个或多个方法函数名相同,参数列表不同的方法叫做重载,它们有三个特点(俗称两必须一可以): 方法名必须相同 参数列表必须不相同 返回值类型可以不相同 例如: public void Sleep() { Console.WriteLine("Animal睡觉"); } public i...

frankDuanh的博客 1307

C#—抽象类使用及方法重写与重载

/* * 创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以 * 分别计算整数、双精度和字符串。 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularE

LY_624的专栏 2744

C#中的虚方法与隐藏方法

虚方法 将一个基类函数声明为virtual,就可以在任何派生类中重写该函数。 class MyBaseClass{ public virtual string VirtualMethod(){ return "Method is called in base class." } } 在派生类中进行重写该函数时,需要使用override关键字...

不积跬步无以至千里 2026

C#:区分:重写、覆盖和重载以及虚方法和抽象方法

(一)重写和覆盖:重写: 在声明时,父类的方法前面加上virtual关键字,子类的方法前面加上override关键字,且与父类方法同名,表示父类的方法可以被子类进行修改和重新定义。 覆盖: 在声明子类方法的时候,添加new关键字,定义与父类同名的方法,称为覆盖。 区别: 当用子类创建父类的时候,重写调用的是子类中的功能,而覆盖调用的仍然是父类的功能。用子类创建子类和用父类创建父类的时候,则

Bambi12的博客 2913

重写方法,重载方法,虚方法和抽象方法。

重写方法,重载方法,虚方法和抽象方法。 重写是指子类重新实现父类的某些方法,以实现一些新的功能。重写的关键字是override。并且重写的方法其签名是相同的。 重载是指允许类中具有相同函数名的方法,但是其函数签名必须是唯一的(顺序,个数等)。重载的方法是在被调用的时候通过函数签名确定需要调用哪一个方法。 虚方法,若一个...

266

c#复习——虚方法、重写方法和抽象方法(官方解释)

若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚方法 (virtual method)。若其中没有 virtual 修饰符,则称该方法为非虚方法 (non-virtual method)。 在调用一个虚方法时,该调用所涉及的那个实例的运行时类型 (runtime type) 确定要调用该方法的哪一个实现。在非虚方法调用中,实例的编译时类型 (compile-time ...

dong51736的博客 357

C#中的虚方法、抽象方法、抽象类以及接口

众所周知,C#作为一门OOP(面向对象程序设计)语言,在许多地方都有与C++相似的地方,然而也有很多不同的地方。 说到面向对象,脑袋里第一反应当然就是面向对象的三大原则(java中是四大原则): 封装、继承、多态。java中还包括抽象。在此不做过多讨论。 今天要讨论的虚方法、抽象方法、抽象类、接口所有的一切都是以多态作为基础的,所以让我们聚焦多态———— 多态是什么? 多态(Polym...

Eyoru的博客 1万+

C#学习日记23---多态性 之 运算符重载、方法重载、抽象类、虚方法

在C#中多态性的定义是:同一操作作用于不同类的实例,不同的类进行不同的解释,最后产生不同的执行结果。换句话说也就是 一个接口,多个功能。 C# 支持2种形式的多态性: 编译时的多态性、运行时的多态性 编译时的多态性:    编译时的多态性是通过重载来实现的 方法重载    您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同,可以是参数列表中的参数类型不同,也可以是

HC666的博客 2004

C#中3种不同的重写方法之重写抽象方法

本文部分内容来源于书籍和网摘。 继承类继承自基类的构造器,“同时”具有基类的构造器主体所具有的功能和被继承的构造器主体中的功能,详见C#构造器的继承问题 https://blog.youkuaiyun.com/number1killer/article/details/81013630。 但是,继承类继承自基类的构造器总是先执行调用基类的构造器,然后才会执行派生类构造器的代码。 那么在C#有没有什么办...

number1killer的博客 1316
上一篇: matlab连接摄像头读取视频部…
下一篇: 网易2019客户端开发实习生岗位线上笔试第一题
天落枫
博客等级 码龄10年 91粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值