C# Unity 面向对象补全计划 之 初识继承方法与多态
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正
本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝
1.继承方法
C# & Unity 面向对象补全计划 之 继承(字段与属性)-CSDN博客
本文讲述继承方法与多态性,是继承的重要伴随知识
我想实现如下内如:
有一个Computer类和一个Mycomputer类作为子类
父类提供推荐配置,而子类提出我自己的配置,并打印
1.1构造函数继承
子类构造函数会默认先调用父类构造函数
举个栗子:
Computer类:
class Computer {// 公共字段public string cpu ;// 私有字段private string gpu ;// 公共属性public string gpu_name {get => gpu;set => gpu = value;}// 公共构造函数public Computer() {cpu = "7500f及以上";gpu_name = "Rx580及以上";Console.WriteLine("{0},{1}",cpu,gpu_name);}// 公共自定义方法public virtual void Configuration() {} }
当我执行Computer类的对象时,会输出如下:
子类继承:
也可以用base关键词进行父类构造函数调用,用的不多故不做演示
class MyComputer : Computer {public MyComputer() {cpu = "5600";gpu_name = "3060";Console.WriteLine("{0},{1}", cpu, gpu_name);} }
子类对象:
输出:
如果父类构造函数是私有的话,就无法使用子类构造函数了
Q:我可以在调用子类构造函数的时候,不调用父类构造函数吗?
A:不行,因为这是语言设计的一部分,用于确保父类的成员被正确初始化
1.2方法继承
我将Computer类添加了一个自定义方法,并将输出语句放到方法里
class Computer {// 公共字段public string cpu ;// 私有字段private string gpu ;// 公共属性public string gpu_name {get => gpu;set => gpu = value;}// 公共构造函数public Computer() {cpu = "7500f及以上";gpu_name = "Rx580及以上";}// 公共自定义方法public void Configuration() {Console.WriteLine("{0},{1}", cpu, gpu_name);} }
如果子类继承以后,写一个相同名字的方法,会输出什么?
MyComputer mycomputer = new MyComputer(); mycomputer.Configuration(); class Computer {// 公共字段public string cpu ;// 私有字段private string gpu ;// 公共属性public string gpu_name {get => gpu;set => gpu = value;}// 公共构造函数public Computer() {cpu = "7500f及以上";gpu_name = "Rx580及以上";}// 公共自定义方法public void Configuration() {Console.WriteLine("{0},{1}", cpu, gpu_name);} }class MyComputer : Computer {public MyComputer() {cpu = "5600";gpu_name = "3060";}public void Configuration(){Console.WriteLine("{0},{1}", cpu, gpu_name);} }
不会继承,所以如果不做特殊处理的话,只会调用自己的方法
所以就用到了多态,直接跳到标题3:多态下
2.多态(上)
2.1方法重载
是指可以出现同名方法,规则如下:
public class Example
{public void Print(int a) { }public void Print(int a, int b) { }public void Print(double a) { }public void Print(int a, double b) { }public void Print(double a, int b) { }
}
2.2运算符重载
运算符重载,一般也用的不多先用现学即可
public static Complex operator +(Complex c1, Complex c2)
{return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
}
public static Complex operator +(Complex c1, Complex c2)
{return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
}
3.多态(下)
3.1虚方法(可以不重写)
在C#中,虚方法(virtual method)是指在基类中声明并可以在派生类中重写的方法
虚方法使用 virtual
关键字进行声明:
public virtual void Configuration() {Console.WriteLine("推荐配置为{0},{1}", cpu, gpu_name);}
子类可以使用override关键字进行重写,并且添加逻辑:
public override void Configuration(){ Console.WriteLine("我的配置为{0},{1}", cpu, gpu_name);Console.WriteLine("打印完毕");}
调用:
Computer computer = new Computer();
computer.Configuration();
MyComputer mycomputer = new MyComputer();
mycomputer.Configuration();
结果:
3.2抽象方法(强制重写)
抽象方法没有方法体,只包含在抽象类之中,只有方法签名,它们必须在派生类中实现
举个栗子:电脑这一概念的确就符合抽象的概念
abstract class Computer {// 公共字段public string cpu ;// 私有字段private string gpu ;// 公共属性public string gpu_name {get => gpu;set => gpu = value;}// 公共构造函数public Computer() {cpu = "7500f及以上";gpu_name = "Rx580及以上";}// 公共自定义方法public abstract void Configuration();
}
子类继承的话,则强制进行方法重写:
public override void Configuration(){ Console.WriteLine("我的配置为{0},{1}", cpu, gpu_name);Console.WriteLine("打印完毕");}
二者区别
相关文章:
C# Unity 面向对象补全计划 之 初识继承方法与多态
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承(字段与属性&…...
突破PyCharm索引瓶颈:提升文件索引速度的策略
突破PyCharm索引瓶颈:提升文件索引速度的策略 PyCharm作为Python开发者的首选IDE,以其强大的功能和灵活的配置而广受好评。然而,当处理大型项目或复杂文件结构时,文件索引慢的问题可能会显著降低开发效率。本文将提供一系列优化技…...
体素相关的快速计算
“体素”通常是指在三维空间中具有固定尺寸和位置的小立方体单元。 体素的优点包括: 易于处理和计算:在计算机图形学和三维建模中,体素的结构相对简单,计算和操作较为方便。能精确表示物体的内部结构:对于一些需要了…...
Python 爬虫项目实战(二):爬取微博热搜榜
前言 网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…...
文件解析漏洞复现
一、IIS 6.X 1.在网站目录创建文件夹名为xxx.asp/xxx.asa 文件夹,里面的任意文件都会被当作asp文件执行 创建1.asp 访问 2.ooo.asp.jpg会被当做asp文件执行 创建一个ooo.asp;.jpg 访问 二、IIS 7.X 上传1.jpg文件在网址后/.php可以成功执行 写一个1.jpg文件内容…...
git push报错 pre-receive hook declined
今天使用git提交的代码的时候,不然报错 pre-receive hook declined提交不上去,昨天还好好的。 经过检查发现,原来对应的分支被leader设置成受保护分支了,导致代码提交不上去。 然后在git管理平台取消分支保护,或者将我…...
打造个性化代码审查工具:在Perl中实现自定义审查的艺术
打造个性化代码审查工具:在Perl中实现自定义审查的艺术 代码审查是软件开发过程中的关键环节,它有助于提高代码质量和发现潜在缺陷。Perl作为一种灵活的编程语言,提供了丰富的特性,使得在Perl中实现自定义的代码审查工具成为可能…...
RabbitMq架构原理剖析及应用
文章目录 RabbitMQ 架构组件1. **Broker** (Broker Server)2. **Exchange**3. **Queue**4. **Producer** (消息生产者)5. **Consumer** (消息消费者)6. **Virtual Hosts** (虚拟主机) 工作流程内部原理1. **队列管理**2. **集群**3. **持久化与内存**4. **性能优化** 高级特性1…...
c# 对接第三方接口实现签名
官网文档要求如下: Sign算法说明 举例:假设请求参数键值对如下 appkey : test2-xx page_no : 0 end_time : 2016-08-01 13:00:00 start_time : 2016-08-01 12:00:00 page_size : 40 sid : test2 timestamp : 1470042310 第一步 对数所有请求参数按照…...
数学建模评价类模型—层次分析法(无数据情况下)
目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 1、算术平均法 2、几何平均法 3、特征值法 目录 文章目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 算术平均法 前言…...
模拟实现strcat(字符串追加)
1.我们要知道stcat的作用是什么,字符串追加。 2.我们进行模仿,我们先将arr1不断,直到“\0”,我们加在后面。 //模拟实现strcat(字符串追加) char* my_strcat(char* arr1, const char* arr2) {assert(arr1 && arr2);char ret arr1;…...
HTTP简单概述
一. HTTP HTTP(HyperText Transfer Protocol)是用于在客户端和服务器之间传输超文本数据(如HTML)的应用层协议。它是万维网的基础协议,定义了浏览器和服务器之间如何请求和传输文档。HTTP有多个版本,每个版…...
掌握PyCharm代码片段管理器:提升编码效率的秘诀
掌握PyCharm代码片段管理器:提升编码效率的秘诀 PyCharm作为业界领先的集成开发环境(IDE),提供了许多便利的功能来提升开发者的编码效率,其中之一就是代码片段管理器。代码片段管理器允许开发者保存、管理和重用代码模…...
MyBatis动态代理和映射器
目录 1、映射器简介 (1)什么是mapper动态代理? (2)动态代理的规范 (3)如何使用动态代理 (4)为什么学映射器 (5)映射器与接口 (…...
ShardingSphere中的ShardingJDBC常见分片算法的实现
文章目录 ShardingJDBC快速入门修改雪花算法和分表策略核心概念分片算法简单INLINE分片算法STANDARD标准分片算法COMPLEX_INLINE复杂分片算法CLASS_BASED自定义分片算法HINT_INLINE强制分片算法 注意事项 ShardingJDBC Git地址 快速入门 现在我存在两个数据库,并…...
SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志
SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志 一、前言二、技术介绍(Flink CDC)1、Flink CDC2、Postgres CDC 三、准备工作四、代码示例五、总结 一、前言 在工作中经常会遇到要实时获取数据库(postgresql、m…...
ThinkPHP事件的使用
技术说明 1.ThinkPHP版本:支持6.0、8.0 2.使用场景:用户登陆后日志记录、通知消息发送等主流程、次流程分离等场景 3.说明:网上很多帖子说的不明不白的,建议大家自己手动尝试总结一下 4.事件手动绑定的时候,一定要…...
【Nuxt】服务端渲染 SSR
SSR 概述 服务器端渲染全称是:Server Side Render,在服务器端渲染页面,并将渲染好HTML返回给浏览器呈现。 SSR应用的页面是在服务端渲染的,用户每请求一个SSR页面都会先在服务端进行渲染,然后将渲染好的页面…...
Spring Boot整合WebSocket
说明:本文介绍如何在Spirng Boot中整合WebSocket,WebSocket介绍,参考下面这篇文章: WebSocket 原始方式 原始方式,指的是使用Spring Boot自己整合的方式,导入的是下面这个依赖 <dependency><g…...
《LeetCode热题100》---<5.③普通数组篇五道>
本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第五道:缺失的第一个正数(困难) 第五道:缺失的第一个正数(困难) 方法一:将数组视为哈希表 class Solution {public int firstMissingPosi…...
Cocos Creator文档学习记录
Cocos Creator文档学习记录 一、什么是Cocos Creator 官方文档链接:Hello World | Cocos Creator 百度百科:Cocos Creator_百度百科 Cocos Creator包括开发和调试、商业化 SDK 的集成、多平台发布、测试、上线这一整套工作流程,可多次的迭…...
插入数据优化 ---大批量数据插入建议使用load
一.insert优化 1.批量插入 2.手动提交事务 3.主键顺序插入 二.大批量插入数据 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下 1.客户端连接服务端时,加入参数 --local-infine mysql --local-infine…...
【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
欢迎来到 CILMY23 的博客 🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向? 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Py…...
svn软件总成全内容
SVN软件总成 概述:本文为经验型文档 目录 D:\安装包\svn软件总成 的目录D:\安装包\svn软件总成\svn-base添加 的目录D:\安装包\svn软件总成\tools 的目录D:\安装包\svn软件总成\tools\sqlite-tools-win32-x86-3360000 的目录D:\安装包\svn软件总成\安装包-----bt lo…...
[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始
目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…...
回测本身就是一种过度拟合?
这也许是一个絮絮叨叨的专题,跟大伙儿唠一唠量化相关的小问题,有感而发写到哪算哪,这是第一期,先唠个10块钱的~ 前段时间在某乎上看到这样一个问题『您怎么理解回测本身就是一种过度拟合?』 个人看来,回测本…...
什么是Arduino?
Arduino是一款便捷灵活、方便上手的开源电子原型平台,由欧洲的一个开发团队于2005年冬季开发。以下是关于Arduino的详细介绍: 一、基本概述 定义:Arduino是一个基于开放源代码的软硬件平台,它让电子设计更加简单快捷。通过Arduin…...
【机器学习基础】Scikit-learn主要用法
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…...
python-素数回文数的个数(赛氪OJ)
[题目描述] 求 11 到 n 之间(包括 n),既是素数又是回文数的整数有多少个。输入: 一个大于 11 小于 10000 的整数 n。输出: 11 到 n 之间的素数回文数个数。样例输入1 23 样例输出1 1 提示: 回文数指左右对…...
OCC 网格化(二)-网格划分算法
目录 一、概述 二、详解 1. 线性偏转 (Linear Deflection) 2. 角偏转 (Angular Deflection) 三、示例 3.1 示例1 3.2 示例2 一、概述 在 Open CASCADE Technology (OCC) 中默认的网格划分算法BRepMesh_IncrementalMesh有两个主要的选项来定义三角剖分—线性和角偏转。 …...
欧美做同志网站有哪些/2022年传销最新消息
项目软件测试计划书项目软件测试计划书7.重庆交通大学《软件工程》课程设计报告班 级:姓 名:学 号:课程设计题目:所 属 课 程 :实验室(中心):指 导 教 师 :完 成 时 间 :…...
wordpress修改附件上传大小限制/腾讯广告平台
前言 如果熟悉其他框架的同学都知道,每个框架都有它自己的配置文件,只需要做简单的配置就可以实现一些常用的功能,减少我们编程的时间。 pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini文件…...
自己可以做电子商务网站/2023年免费b站推广大全
思路:枚举可能的完全平方数,用个map存储a[i]的出现次数,看每个数对完全平方数的贡献次数 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vecto…...
稳定免费域名/seo推广培训资料
题目链接:https://ctf.bugku.com/challenges 题解: 打开题目 得到一段PHP代码 该代码中相关函数知识点链接如下:extract函数:http://www.w3school.com.cn/php/func_array_extract.aspisset函数:http://php.net/manual/…...
自己做的网站怎么接入银联支付/怎么样拓展客户资源
昨天因为Tomcat问题装了JDK1.6,原来的jdk是1.8的,然后今天启动eclipse出现异常,Java was started but returned exit 1。 异常中已经说明java is started 说明java运行是正常的(不放心可以去命令行dos下测试java环境)&…...
做食品行业网站/企业网站制作
近期购入了HP Gen8,安装了winserver2012r2,开启SMB共享,添加Everyone读取权限,然后在同一局域网下的小米盒子上打开自带的高清播放器软件,添加设备,输入Gen8局域网ip,就能看到共享的文件夹了。读…...