新闻详情

新闻详情

首页 / 资讯中心 / 详情

C#第二周学习的重点

发布时间:2026/11/15 16:22:19来源:尧图网络
C#第二周学习的重点
本文记录面向对象编程的核心概念类与对象、构造方法、方法重载以及继承与重写。通过一个「学生信息管理系统」的实战案例逐步理解 OOP 思想。一、类与对象1.1 引言今天主要学习了面向对象编程。面向对象不同于面向过程面向过程更注重于动作过程而面向对象更注重于对象本身。我们定义一个类类中有属性和方法拥有这些属性和方法的变量称为对象对象可以调用类中的方法。使用类提升了我们的代码复用性。当我们需要定义多个拥有同样属性和方法的变量时只需构造一个类将它们定义为该类的对象即可。例如我们需要存储多个人的个人信息并输出。如果不定义类和对象我们需要依次定义每个人的信息和输出这样会大大增加代码的冗余度如果定义类与对象我们可以减少重复的代码提升代码的复用性。1.2 定义 Student 类// 定义 Student 类的代码为internalclassStudent{/// summary/// 学号/// /summaryprivatestring_id;publicstringId{get{return_id;}set{if(value.Length8){_idvalue;}else{_idnull;}}}/// summary/// 姓名/// /summarypublicstring_name;publicstringName{get{return_name;}set{_namevalue;}}/// summary/// 年龄/// /summarypublicint_age;publicintAge{get{return_age;}set{if(value0value150){_agevalue;}}}/// summary/// 性别/// /summarypublicchar_sex;publiccharSex{get{return_sex;}set{if(value!男value!女){value男;}_sexvalue;}}publicstringAiHao;publicvoidJiBen(){Console.WriteLine($大家好我叫{Name}学号是{Id}我今年{Age}岁是个{Sex}生我的爱好是{AiHao});}}1.3 Main 函数代码staticvoidMain(string[]args){stringjiXu;do{Console.WriteLine(学生1张三\n学生2李四\n学生3王五\n学生4老六\n学生5改个蛋);Console.WriteLine(请输入要查看的自我介绍的学生代号为);intstudentNumConvert.ToInt32(Console.ReadLine());switch(studentNum){case1:Studentstudent1newStudent();student1.Name张三;student1.Sex男;student1.Age18;student1.Id26310101;student1.AiHao打篮球;student1.JiBen();break;case2:Studentstudent2newStudent();student2.Name李四;student2.Sex男;student2.Age19;student2.Id26310102;student2.AiHao打羽毛球;student2.JiBen();break;case3:Studentstudent3newStudent();student3.Name王五;student3.Sex女;student3.Age18;student3.Id26310103;student3.AiHao打篮球;student3.JiBen();break;case4:Studentstudent4newStudent();student4.Name老六;student4.Sex男;student4.Age19;student4.Id26310104;student4.AiHao踢足球;student4.JiBen();break;case5:Studentstudent5newStudent();student5.Name改个蛋;student5.Sex女;student5.Age18;student5.Id26310105;student5.AiHao打乒乓球;student5.JiBen();break;}Console.WriteLine(是否继续查看y/n);jiXuConsole.ReadLine();}while(jiXuy||jiXuY);}1.4 小结通过定义Student类我们只需创建不同的对象并赋值即可复用同一套属性和方法大大减少了重复代码这正是面向对象编程的核心优势。二、构造方法2.1 为什么需要构造方法上次我在面向对象提到过类与对象虽然提升了一定的代码复用率但是我们不难发现还是会有大量的对对象赋值的语句较为重复我们今天使用构造方法来进一步减少代码冗余度。例如// 定义 Student 类的代码为internalclassStudent{/// summary/// 学号/// /summaryprivatestring_id;publicstringId{get{return_id;}set{if(value.Length8){_idvalue;}else{_idnull;}}}/// summary/// 姓名/// /summarypublicstring_name;publicstringName{get{return_name;}set{_namevalue;}}/// summary/// 年龄/// /summarypublicint_age;publicintAge{get{return_age;}set{if(value0value150){_agevalue;}}}/// summary/// 性别/// /summarypublicchar_sex;publiccharSex{get{return_sex;}set{if(value!男value!女){value男;}_sexvalue;}}publicstringAiHao;publicvoidJiBen(){Console.WriteLine($大家好我叫{Name}学号是{Id}我今年{Age}岁是个{Sex}生我的爱好是{AiHao});}}2.2 不使用构造方法的 Main 函数staticvoidMain(string[]args){stringjiXu;do{Console.WriteLine(学生1张三\n学生2李四\n学生3王五\n学生4老六\n学生5改个蛋);Console.WriteLine(请输入要查看的自我介绍的学生代号为);intstudentNumConvert.ToInt32(Console.ReadLine());switch(studentNum){case1:Studentstudent1newStudent();student1.Name张三;student1.Sex男;student1.Age18;student1.Id26310101;student1.AiHao打篮球;student1.JiBen();break;case2:Studentstudent2newStudent();student2.Name李四;student2.Sex男;student2.Age19;student2.Id26310102;student2.AiHao打羽毛球;student2.JiBen();break;case3:Studentstudent3newStudent();student3.Name王五;student3.Sex女;student3.Age18;student3.Id26310103;student3.AiHao打篮球;student3.JiBen();break;case4:Studentstudent4newStudent();student4.Name老六;student4.Sex男;student4.Age19;student4.Id26310104;student4.AiHao踢足球;student4.JiBen();break;case5:Studentstudent5newStudent();student5.Name改个蛋;student5.Sex女;student5.Age18;student5.Id26310105;student5.AiHao打乒乓球;student5.JiBen();break;}Console.WriteLine(是否继续查看y/n);jiXuConsole.ReadLine();}while(jiXuy||jiXuY);}2.3 使用构造方法后的 Main 函数staticvoidMain(string[]args){stringjiXu;do{Console.WriteLine(学生1张三\n学生2李四\n学生3王五\n学生4老六\n学生5改个蛋);Console.WriteLine(请输入要查看的自我介绍的学生代号为);intstudentNumConvert.ToInt32(Console.ReadLine());switch(studentNum){case1:Studentstudent1newStudent(26310101,张三,18,男,打篮球);student1.JiBen();break;case2:Studentstudent2newStudent(26310102,李四,19,男,打羽毛球);student2.JiBen();break;case3:Studentstudent3newStudent(26310103,王五,18,女,打麻将);student3.JiBen();break;case4:Studentstudent4newStudent(26310104,老六,19,男,踢足球);student4.JiBen();break;case5:Studentstudent5newStudent(26310105,改个蛋,18,女,打乒乓球);student5.JiBen();break;}Console.WriteLine(是否继续查看y/n);jiXuConsole.ReadLine();}while(jiXuy||jiXuY);}2.4 构造方法的定义// 在类中// 在没有构造时默认为publicStudent(){}// 构造方法为publicStudent(stringid,stringname,intage,charsex,stringaiHao){Idid;Namename;Ageage;Sexsex;AiHaoaiHao;}三、方法重载指在一个类中定义多个一样的方法名但传入的参数的数量或者数据类型不完全相同。// 定义两个数相加方法的数据类型组合共用四种所以对方法 JiaFa 进行四种重载internalclassJiSuanQi{publicvoidJiaFa(intnum1,intnum2){Console.WriteLine(和为:(num1num2));}publicvoidJiaFa(doublenum1,intnum2){Console.WriteLine(和为:(num1num2));}publicvoidJiaFa(intnum1,doublenum2){Console.WriteLine(和为:(num1num2));}publicvoidJiaFa(doublenum1,doublenum2){Console.WriteLine(和为:(num1num2));}}四、继承与重写4.1 继承今天主要学习了继承和方法的重写。继承子类可以继承父类的属性和方法但是不能继承父类的私有字段。继承具有单根性和传递性单根性一个类只能有一个父类但是一个父类可以有多个子类。传递性继承具有传递性父类非私有的属性和方法可以被子类继承也可以被子类的子类继承。4.2 重写重写子类需要用到一个和父类同名的方法但是从父类继承的方法不能满足子类的需求此时我们在子类重写这个方法它们的形参和返回值都一样但是方法的内容可以改变。4.3 构造方法与 base 关键字如果我们在父类进行了构造方法子类不能直接继承这个构造方法而是要添加base形参例如Student继承Person类。// Person 类中的构造方法publicPerson(stringname,intage,stringsex){this.Namename;this.Ageage;this.Sexsex;}// Student 类中的构造方法publicStudent(stringname,intage,stringsex):base(name,age,sex){}当我们没有在子类重写的构造方法里写内容时会调用父类构造方法里的内容base()里的形参用于返还给父类。五、总结本文通过「学生信息管理系统」案例梳理了面向对象编程的四大核心知识点类与对象通过类封装属性和方法提升代码复用性。构造方法在创建对象时一次性完成属性赋值减少重复代码。方法重载同名方法通过不同参数类型/数量实现多态。继承与重写子类复用父类能力并通过重写满足个性化需求。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉