news 2026/3/15 0:37:38

【第14天】14c#今日小结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【第14天】14c#今日小结

1.多态之函数重载

多态:同一个方法不同形态体现,
多态分静态多态动态多态
静态多态:函数重载符号重载
动态多态:抽象虚方法

函数重载:在同一个范围内,函数名一样,参数的类型不一样、参数的个数不一样,这样函数就是重载

仅仅只有返回值类型不一样,不属于函数的重载

class People { //构造函数重载 public People() { Console.WriteLine("不带参数的构造函数"); } public People(int a) { Console.WriteLine("带一个整型参数的构造函数"); } public People(string a) { Console.WriteLine("带一个字符串参数的构造函数"); } public People(string a,int b) { Console.WriteLine("带2个参数的构造函数"); } public void Eat() { Console.WriteLine("中文吃饭"); } public void Eat(string a) { Console.WriteLine("中文吃"+a); } public void Eat(string a,int count) { Console.WriteLine("中文吃" + a); } }
static void Main(string[] args) { new People("11"); new People().Eat(); new People().Eat("biangbiang面"); new People().Eat("豆豉糖"); Console.ReadKey(); }

2.符号重载

符号重载:把常用的算术运算符号、逻辑运算符号按照自己的定义方式进行运算 能够使对象进行运算
例如+,可以计算俩个数字相加, 10+10=20
如果想实现俩个对象相加 可以通过符号重载实现

符号重载:定义成静态的方法 ,在符号前面添加operator关键字

class Shape { public int X { get; set; }//长 public int Y { get; set; } //宽 public int Z { get; set; }// 高 public Shape() { } public Shape(int x, int y, int z) { this.X = x; this.Y = y; this.Z = z; } //重载+ 让俩个对象相加,计算俩个对象体积相加的结果 //符号重载:定义成静态的方法 ,在符号前面添加operator关键字 public static int operator +(Shape s1, Shape s2) { //s1.X*s1.Y*s1.Z s1的体积 //s2.X * s2.Y * s2.Z s2的体积 return s1.X * s1.Y * s1.Z + s2.X * s2.Y * s2.Z; } }
static void Main(string[] args) { Shape p1 = new Shape(100,200,300); Shape p2 = new Shape(10,20,30); Console.WriteLine(p1+p2);// 允许俩个Shape对象相加 重载+ }


3.抽象类

动态多态表现:抽象
抽象类:用于提供类的部分成员实现,包含抽象方法也可以普通的方法,如果是抽象方法不用去实现,谁继承这个抽象类谁去实现抽象方法
抽象类里面也可以定义抽象成员, 如果是抽象成员,需要在派生类去实现成员

定义抽象类 public abstract class People{}
定义抽象方法 public abstract void SayHello(int a) ;

派生类实现的时候添加override关键字 public override void SayHello(int a) { Console.WriteLine("你好 吃了么"); }

//定义抽象类 public abstract class People{} public abstract class People { public int Age { get; set; } = 10;// 普通的属性 //public abstract string Name { get; set; } = "上海一女子单身46死亡了 遗产几百万被当地民政局没收,墓地费需要表弟承担"; // 抽象属性 不能赋值 public abstract string Name { get; set; } //普通方法可以正常定义和实现 public void Eat() { Console.WriteLine("吃相难看"); } //抽象方法不能有方法体 不能加{} public abstract void SayHello(int a) ; } //在子类实现抽象成员 public class China : People { //需要重写抽象成员和抽象方法 //重写关键字 override public override string Name { get; set; } = "南京博物馆火了"; //重写抽象方法 public override void SayHello(int a) { Console.WriteLine("你好 吃了么"); } } public class Japan : People { public override string Name { get; set; } = "高斯早苗"; public override void SayHello(int a) { Console.WriteLine("こんにちは (Konnichiwa)"); // สวัสดี(发音:sa - wàt - dii) // 안녕하세요(An-nyeong-ha-se-yo) } }
static void Main(string[] args) { China china = new China(); china.Age = 10;//继承过来的普通属性 china.Name = "ss";//调用子类的实现的抽象成员 china.SayHello(10);//调用子类的实现的抽象方法 china.Eat();//继承过来的普通方法 Japan japan = new Japan(); japan.SayHello(10); // 调用子类的实现的抽象方法 japan.Eat();// 继承过来的普通方法 Console.ReadKey(); }

4.虚方法

抽象方法和虚方法的区别
1 抽象成员和抽象方法只能定义抽象类里面 ,但是虚方法和虚成员可以定义普通类里面
2 抽象方法和抽象成员在抽象类不能实现, 但是虚方法和虚成员可以定义普通类里面可以实现
3 抽象方法和抽象成员在派生类必须实现, 但是虚方法和虚成员可以不用在派生类实现
4 可以使用overrid重写基类的抽象方法或者虚方法

public class People { public virtual int A { get; set; } = 10; public string Name { get; set; } // 普通属性 //public abstract int Age { get; set; }// 抽象成员不能定义在普通类中 //public abstract void Eat(); //抽象方法不能定义在普通类中 public virtual void Eat() //添加virtual关键字 使方法变成虚方法,虚方法可以定义普通类中,并且可以实现。 { Console.WriteLine("Peoplel的eat方法"); } } public class HanGuo : People { //通过重写override基类虚方法 public override void Eat() { Console.WriteLine("韩国吃泡菜"); } } public class YinDu:People { //new 新建一个eat方法,和基类eat的方法没有任何关系, public new void Eat() { Console.WriteLine("印度人吃咖喱"); } }
static void Main(string[] args) { HanGuo h1 = new HanGuo(); h1.Name = "金喜善"; h1.Eat(); YinDu yd = new YinDu(); yd.Name = "阿三"; yd.Eat(); Console.ReadKey(); }

5.密封类和静态类

//抽象类被继承 // sealed 密封类,特点不能被继承 public sealed class A { public string Name { get; set; } public void Eat() { Console.WriteLine("eat"); } //密封类不允许被继承的,虚方法设计目的就是为了在子类重写这个虚方法,俩者设计理念违背了 //public virtual void Eat2() //{ // Console.WriteLine("aa1"); //} } //class B :A{ } 特点不能被继承 //静态类:添加静态成员,不能new 实例化 static class B { public static int Age { get; set; } public static void Eat() { Console.WriteLine("111"); } }
static void Main(string[] args) { // 密封类的使用 A a = new A(); a.Name = "好"; a.Eat(); // 静态类的使用 B.Age = 10; B.Eat(); //static class静态类:添加静态成员,不能new 实例化 //sealed class 密封类,特点不能被继承 Console.ReadKey(); }



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 20:58:20

16、系统管理:系统维护脚本全解析

系统管理:系统维护脚本全解析 在系统管理的日常工作中,脚本的运用至关重要。它能帮助管理员高效地完成诸如进程管理、任务调度验证以及系统定时任务执行等任务。下面将详细介绍几个实用脚本的工作原理、运行方法及可能的改进方向。 1. killall 脚本 killall 脚本用于匹配并…

作者头像 李华
网站建设 2026/3/14 3:41:43

JAVA不好找工作了

这是小红书上一位35岁Java开发员找不到工作的真实经历。 说真的,这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。 结果GPT、DeepSee…

作者头像 李华
网站建设 2026/3/13 9:06:58

12、Unix 文件操作与系统信息获取实用指南

Unix 文件操作与系统信息获取实用指南 在 Unix 系统中,有许多强大的工具可用于文件操作和系统信息获取。下面将详细介绍这些工具的使用方法。 1. 使用 sdiff 比较文件差异 sdiff 是一个用于比较两个文件的实用工具,它会在屏幕上并排显示两个文件,方便你直观地比较它们的差…

作者头像 李华
网站建设 2026/3/13 12:02:24

基于51单片机的厨房温湿度烟雾CO粉尘多参数环境监测报警系统设计

1. 系统总体概述 点击链接下载设计资料:https://download.csdn.net/download/qq_39020934/92091166 1.1 设计背景 随着城市生活节奏的加快,厨房已经成为家庭和餐饮场所中使用频率最高、环境变化最为剧烈的区域之一。在厨房环境中,温度、湿度…

作者头像 李华
网站建设 2026/3/12 9:13:04

海立股份子公司亮相行业双会 AI赋能与绿色技术引领压缩机创新

近日,海立股份(600619.SH)旗下子公司海立电器接连参与两大行业盛会,分别是12月9日至12月12日于长沙召开的以“创新提质,绿色高效”为主题的中国制冷学会学术年会,以及12月10日至12月11日在武汉举办的以“AI…

作者头像 李华
网站建设 2026/3/12 16:29:06

自动化运维工具 Ansible 集中化管理服务器

目录 1. Ansible 概述和运行机制 1.1 Ansible 概述 1.2 Ansible 工作机制 1.3 Ansible 角色 (Role) 2. Ansible 环境安装部署 3. Ansible 基础命令及模块操作 3.1 command 模块 3.2 shell 模块 3.3 cron 模块 3.4 user 模块 3.5 group 模块 3.6 copy 模块 3.7 file…

作者头像 李华