C# Unity 面向对象补全计划 之 继承(字段与属性)

 本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝

Q:为什么要单讲继承字段与属性,不讲继承方法了吗???

A:因为继承方法离不开多态,多态相对于继承又是新的内容,容易混淆概念

1.继承的介绍

在 C# 中,继承是面向对象编程的一个重要概念。它允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的重用和扩展

大大大前提是,你需要让父类和子类在同一命名空间,就比如:

 

2 继承字段

首先,对于继承的字段等可以采用protected修饰符保证访问权限和安全性

C# & Unity 面向对象补全计划 之 访问修饰符-CSDN博客

其次,继承而来的字段可以在子类的构造函数,方法等中使用

除非是静态字段,不然无法给子类的字段赋值,别犯傻

使用栗子: 

比如我现在有一个房子类,其有两个字段:标准地基长度,标准地基宽度

商业住房和住宅住房基于房子的标准地基长款进行修改

房子类:

class Houes {protected int baseSubgradeLength;protected int baseSubgradeWeigth;public Houes() {baseSubgradeLength = 100;baseSubgradeWeigth = 100;}}

住宅和商业地基的继承与修改

Dwelling dwelling = new Dwelling(); 
Commerce commerce =new Commerce();class Houes {protected int baseSubgradeLength;protected int baseSubgradeWeigth;public Houes() {baseSubgradeLength = 100;baseSubgradeWeigth = 100;}}
class Dwelling : Houes {public Dwelling() {Console.WriteLine("{0}{1}", baseSubgradeLength += 50, baseSubgradeWeigth += 50);}}
class Commerce : Houes {public Commerce() {Console.WriteLine("{0}{1}", baseSubgradeLength += 100, baseSubgradeWeigth += 100);}
}

3.继承属性

现在,为了房子地基的字段更加安全,有关部门设置为私有变量,只给出属性接口去修改

商业类和住宅类还是想修改地基长宽,应该怎么办?

 

class Houes {private int baseSubgradeLength;private int baseSubgradeWeigth;public Houes() {baseSubgradeLength = 100;baseSubgradeWeigth = 100;}protected int SubgradeL{ get => baseSubgradeLength; set => baseSubgradeLength = value;}protected int SubgradeWeigth{ get=> baseSubgradeWeigth; set => baseSubgradeWeigth = value;}}

还是像字段一样,在构造函数里直接通过继承来的属性访问器修改就行了 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;Dwelling dwelling = new Dwelling(); 
dwelling.
Commerce commerce =new Commerce();class Houes {private int baseSubgradeLength;private int baseSubgradeWeigth;public Houes() {baseSubgradeLength = 100;baseSubgradeWeigth = 100;}protected int SubgradeL{ get => baseSubgradeLength; set => baseSubgradeLength = value;}protected int SubgradeWeigth{ get=> baseSubgradeWeigth; set => baseSubgradeWeigth = value;}}
class Dwelling : Houes {public Dwelling() {Console.WriteLine("{0}{1}", SubgradeL += 50, SubgradeWeigth += 50);}}
class Commerce : Houes {public Commerce() {Console.WriteLine("{0}{1}", SubgradeL  += 100, SubgradeWeigth += 100);}
}

 好了,现在字段和属性部分你驾轻就熟了,下一篇文章就是关于继承方法了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280328.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Centos 7配置问题

在VMWare12上面安装Centos 7 Linux虚拟机,在切换到命令界面时,需要登录用户名和密码,但发现输入用户后有字符显示,但是密码没有。 经过一系列查看后,发现这个是Linux的一种机制,即当你输入密码时不显示&…

为什么阿里开发手册不建议使用Date类?

在日常编码中,基本上99%的项目都会有一个DateUtil工具类,而时间工具类里用的最多的就是java.util.Date。 大家都这么写,这还能有问题?? 当你的“默认常识”出现问题,这个打击,就是毁灭性的。 …

Python学习计划——7.2数据可视化

数据可视化是数据分析的重要组成部分,通过图表和图形将数据直观地展示出来,帮助我们发现数据中的模式和趋势。Python中常用的数据可视化库有matplotlib和seaborn。以下是对这些库的详细讲解及可运行的Python案例。 1. matplotlib 库 matplotlib 是一个…

Git 基础操作手册:轻松掌握常用命令

Git 操作完全手册:轻松掌握常用命令 引言一、暂存:git add ✏️二、提交:git commit 📝三、拉取、拉取合并 🔄四、推送:git push 🌐五、查看状态:git status 📊六、查看历…

数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)

数据库管理225期 2024-07-30 数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)1 二进制向量维度格式2 RAC上的复制HNSW向量索引3 JSON集合4 JSON_ID SQL函数5 优化的通过网络对NVMe设备的Oracle的原生访问6 DBCA支持PMEM存储7 DBCA支持标准版高可…

[PM]面试题-工作问题

画一个原型需要多久?写一篇PRD文档需求多久? 时间长短取决于项目规模和业务难度, 规模大难度高,就要花费很长的时间, 规模下难度低时间就短, 一般来说, 1-2周的时间就可以完成原型和RED文档 市场需求文档写什么? 从打到下进行编写, 大的方面以市场为主体,包括市场规模, 发…

AI-PaddleOCR2.8在VS2019编译运行基于C++引擎推理CPU版本

1、下载PaddleOCR-release-2.8开源项目 https://github.com/PaddlePaddle/PaddleOCR https://github.com/PaddlePaddle/PaddleOCR/releases https://gitee.com/paddlepaddle/PaddleOCR?_fromgitee_search 2、下载安装Windows预测库 https://paddleinference.paddlepaddle.o…

轻量级服务器资源监控平台Beszel

什么是 Beszel ? Beszel 是一个轻量级平台,借助 Beszel,可以访问 CPU 和内存使用情况的历史数据,以及 Docker 容器指标(例如特定于容器的 CPU 和内存统计信息)。还能收到针对潜在问题的可自定义警报通知&am…

【Docker】安装 Docker(Server-Centos、GUI-Windows11)—— 超详细教程

一、各版本平台支持情况 1、Server 版本 2、桌面版本 二、Server 版本安装(Centos) 1、安装依赖 (1)支持的操作系统 CentOS 7:推荐 CentOS 8 (stream) CentOS 9 (stream) (2)支持的 CPU A…

spring源码 循环依赖

spring框架两大核心:IOC和AOP IOC(Inverse of Control)控制反转 将对象的创建权交给 Spring 容器去创建,利用了工厂模式将对象交给容器管理,只需要在spring配置文件中配置相应的bean,以及设置相关的属性,让spring容器…

华为机试HJ76尼科彻斯定理

华为机试HJ76尼科彻斯定理 题目: 想法: 从题目可以找到规律,输出的第一个奇数为 ( 当前输入数值 − 1 ) 当前输入数值 1 (当前输入数值-1)当前输入数值1 (当前输入数值−1)当前输入数值1,输出是连续的输入数值个数个奇数&#…

具身智能又进一步!卡内基梅隆Meta苏黎世联邦实现虚拟人超灵活抓取

论文链接:https://arxiv.org/pdf/2407.11385 github链接:https://www.zhengyiluo.com/Omnigrasp-Site/ 亮点直击 本文设计了一种灵巧且通用的人形机器人运动表示,这显著提高了样本效率,并使得通过简单而有效的状态和奖励设计来学习…

51单片机嵌入式开发:22、STC89C52R控制 实现单总线温度传感器DS18b20的温度读取

STC89C52R控制 实现单总线温度传感器DS18b20的温度读取 1 概述1.1 介绍1.2 特点1.3 应用领域 2 DS18B20原理详解2.1 内部机理2.2 读写时序2.3 DS18B20操作代码程序 3 演示4 总结 配套演示例程 1 概述 DS18B20是一款数字温度传感器,由Maxim Integrated(美…

【linux】【操作系统】head.s 源码阅读

head.s是Intel x86架构下的汇编语言代码,用于设置操作系统的内存管理和中断处理。主要完成以下内容: 设置数据段、代码段、附加段和全局段寄存器为0x10。设置堆栈指针为_stack_start。设置中断描述符表(IDT)和全局描述符表&#…

负载均衡、软件平滑升级

安装nginx 1.26.1 平滑升级、负载均衡 安装依赖 gcc gcc-c pcre-devel openssl-devel 七层负载均衡配置: [rootf ~]# vim /usr/local/nginx/conf/nginx.conf 43 location / {44 # root html;45 # index index.html index…

airtest的demo实现多设备并行

airtest的demo实现多设备并行 它实现是的获取adb连接上的所有设备,然后在每一台设备上跑给定的测试用例,跑完之后生成单机的测试报告,最后再汇总这些单机测试报告的结果,形成汇总(聚合)报告: 同…

html+css 实现4角移动悬停按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现

【框架地址】 https://github.com/modelscope/FunASR 【简单介绍】 FunASR是一个功能全面的语音识别工具包,支持多种预训练模型的推理和微调,提供高精度和高效能的语音识别服务。结合PyAudio库,可以实现电脑本地麦克风实时语音识别项目。 …

ZeST:Zero-shot material transfer from a single image

1.Introduction 编辑图像中的物体材料。本文中,给定一个物体的单一图像和另一个材料示例图像,目标是直接在2D中将材料外观从示例转移到目标物体。1.材料迁移的明确方法需要理解示例和输入图像中的许多物体级属性,例如几何形状和光照。随后,将材料信息从这些属性中分离出来,…

最后一个单词的长度-string

58. 最后一个单词的长度 - 力扣(LeetCode) class Solution { public:int lengthOfLastWord(string s) {int right s.size()-1;while(s[right] ){right--;}int cnt 0;while(right > 0 && s[right] ! ){right--;cnt;}return cnt;} }; 注意…