C#核心(2)类和对象

前言

在上一节中,我们已经了解了面向对象开发的概念和原则,那今天,我们就来讲讲c#中的类。

c#中的类是我们面向对象开发使用最频繁的东西。

在未来我们要学习的unity开发中也是必不可少的。

所以希望屏幕前的你务必把这一块的知识学得扎实一些,好为未来的工作做好打算。

类的概念

万物皆对象,用程序抽象出来的对象的概况就是类。

在C#中,类是一种数据结构,用于封装数据和行为。它是面向对象编程的核心概念之一。一个类可以定义对象的属性(数据)和方法(行为),并且可以根据该类创建多个对象。

我们概括一下注意事项(要点):

  1. 类一般具有相同的特征或者行为:比如不管是苹果树(对象)或者葡萄树(对象)都是树(一个类),他们都有根(特征)
  2. 是一类事物程序的抽象语言(用程序描述一个人的特征,描述后形成的数据结构就是类)
  3. 类是对象的模板,比如人(类)有说话的能力,小明说了你好(照着人提供的说话能力实现的)
  4. 可以通过类创建对象,比如有了人(类),就可以创建出一个叫小刚的人(对象)。
  5. 类的关键词:class

声明的语法

访问修饰符 class 类名
{特征——成员变量//构造函数和析构函数行为——成员方法//索引器保护特征——成员属性//运算符重载或者静态成员    
}

有些概念你看不懂也没关系,这些我们在后面都会一一讲解,你现在需要知道的就是,类里面会有特征和行为就OK了。 

申明的实例

以下是博主对一个类的声明,接下来我们围绕着这个例子展开来讲解类。

我们来实现一个人的类,简单来说,他有名字,然后会打招呼,我们基于此来实现它。

public class Person
{// 特征private string name;// 属性public string Name//后续成员属性会讲,这里你只用知道是给name赋值就行{get { return name; }set { name = value; }}// 方法public void SayHello(){Console.WriteLine("Hello, my name is " + name);}
}

tips:声明一般在namespace语句块中。

类对象的概念

  • 类的声明和类对象的声明是两个概念,一个是声明框架,一个是声明实例。(声明树这一个种类和声明这里确实存在一颗怎样的树)
  • 类的声明类似枚举和结构体的声明,类的声明相当于声明一个自定义的变量类型
  • 对象是创建出来的,相当于声明一个指定类这种变量类型的变量
  • 这个过程我们一般称为实例化对象
  • 类对象都是引用类型

实例化

我们继续上面声明的类,然后来实例化一个person,叫John,然后调用他自我介绍的方法。

// 创建类的实例并使用
Person person = new Person();
person.Name = "John";
person.SayHello();

 打印结果如下:

Hello, my name is John

你可以自己尝试一下。

tips:如果我们再实例化一个new person,他们的所有信息也是独有的,彼此没有关系,int a和int b的区别类似。

强化

这是我们之前用结构体实现的一个小功能,现在我们用类重新来实现一下。

using System;struct StudentGrade
{public string name;public int grade;public StudentGrade(string name, int grade){this.name = name;//本身的name变量等于传入的name值this.grade = grade;}public void DisplayInformation(){Console.WriteLine("Name: {0}", name);Console.WriteLine("Grade: {0}", grade);}
}class Program
{static void Main(string[] args){// 创建学生成绩实例StudentGrade student = new StudentGrade("John Doe", 85);// 显示学生成绩信息student.DisplayInformation();Console.ReadLine();}
}

可能你的实现过程和博主不一样,博主也使用了一些后面才会讲的知识点,但使用class是可以实现的哦。

using System;  class StudentGrade  
{  public string Name { get; set; }  public int Grade { get; set; }  // 构造函数,传参public StudentGrade(string name, int grade)  {  Name = name;  Grade = grade;  }  // 方法用于显示学生成绩信息  public void DisplayInformation()  {  Console.WriteLine("Name: {0}", Name);  Console.WriteLine("Grade: {0}", Grade);  }  
}  class Program  
{  static void Main(string[] args)  {  // 创建学生成绩实例  StudentGrade student = new StudentGrade("John Doe", 85);  // 显示学生成绩信息  student.DisplayInformation();  Console.ReadLine();  }  
}

你可能有疑问结构体和类有什么区别,博主后续会进行讲解,以及为什么不同结构体来代替类,博主也会在后续讲解。

接下来的学习,类肯定会萦绕你的脑海。 

总结

我们今天对类进行了简单的学习,大概了解了一些概念,也做了一点练习,我想你已经能够get到类的作用以及概念。

可能有些知识点看上去好像很难,但博主相信你只要脚踏实地的学习,一定会成为一个程序员大佬的。

请期待我的下一篇博客!共勉!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文件增量备份系统】MySQL百万量级数据量分页查询性能优化

🎯 导读:本文针对大数据量下的分页查询性能问题进行了深入探讨与优化,最初查询耗时长达12秒,通过避免全表计数及利用缓存保存总数的方式显著提升了浅分页查询速度。面对深分页时依然存在的延迟,采用先查询倒数第N条记录…

时间序列LSTM实现

这个代码参考了时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)_lstm预测模型-CSDN博客 结合我之前所学的lstm-seq2seq里所学习到的知识对其进行预测 import time import numpy as np import pandas as pd import torch import…

Meta Sapiens 人体AI模型

Meta 一直是开发图像和视频模型的领导者,现在他们又增加了一个新东西:Meta Sapiens。和Homo sapiens一样,这个模型也是关于人类的。它旨在执行与人类相关的任务,例如理解身体姿势、识别身体部位、预测深度,甚至确定皮肤…

算法课习题汇总(3)

循环日程表 设有N个选手进行循环比赛,其中N2M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空。 例如4个人进行比赛: 思路: 把表格…

Spring MVC 基本配置步骤 总结

1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…

通过WebTopo在ARMxy边缘计算网关上实现系统集成

随着工业互联网技术的发展&#xff0c;边缘计算成为了连接物理世界与数字世界的桥梁&#xff0c;其重要性日益凸显。边缘计算网关作为数据采集、处理与传输的核心设备&#xff0c;在智能制造、智慧城市等领域发挥着关键作用。 1. BL340系列概述 BL340系列是基于全志科技T507-…

MATLAB仿真实现图像去噪

摘要 数字图像处理是一门新兴技术&#xff0c;随着计算机硬件的发展&#xff0c;其处理能力的不断增强&#xff0c;数字图像的实时处理已经成为可能。由于数字图像处理的各种算法的出现&#xff0c;图像处理学科在飞速发展的同时逐渐向其他学科交叉渗透。数字图像处理是一种通过…

【目标检测】隐翅虫数据集386张VOC+YOLO

隐翅虫数据集&#xff1a;图片来自网页爬虫&#xff0c;删除重复项后整理标注而成 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;386 标注…

电子电路的基础知识

电子电路是现代电子技术的基础&#xff0c;由电子元件&#xff08;如电阻、电容、电感、二极管、晶体管等&#xff09;和无线电元件通过一定方式连接而成的电路系统。 以下是对电子电路的详细概述&#xff1a; 一、定义与分类 定义&#xff1a;电子电路是指由电子器件和有关无…

240925-GAN生成对抗网络

GAN生成对抗网络 GAN&#xff0c;顾名思义&#xff0c;gan……咳咳&#xff0c;就是干仗嘛&#xff08;听子豪兄的课讲说这个名字还真的源于中文这个字&#xff09;&#xff0c;对应的就有两方&#xff0c;放在这里就是有两个网络互相对抗互相学习。类比武林高手切磋&#xff…

dev containers plugins for vscode构建虚拟开发环境

0. 需求说明 自用笔记本构建一套开发环境&#xff0c;用docker 虚拟插件 dev containers,实现开发环境的构建&#xff0c;我想构建一套LLMs的环境&#xff0c;由于环境配置太多&#xff0c;不想污染本地环境&#xff0c;所以选择隔离技术 1. 环境准备 vscodedocker 2. 步骤…

韦东山FreeRTOS笔记

介绍 这篇文章是我学习FreeRTOS的笔记 学的是哔哩哔哩韦东山老师的课程 在学习FreeRTOS之前已经学习过江协的标准库和一丢丢的超子说物联网的HAL了。他们讲的都很不错 正在更新&#xff0c; 大家可以在我的Gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion…

idea.vmoptions 最佳配置

1. 推荐的 idea64.exe.vmoptions 配置&#xff1a; -Xms1024m -Xmx4096m -XX:ReservedCodeCacheSize512m -XX:UseG1GC -XX:SoftRefLRUPolicyMSPerMB50 -XX:CICompilerCount4 -XX:HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dsun.io.useCanonCachesfalse -Dj…

微服务JSR303解析部署使用全流程

目录 1、什么是JSR303校验 2、小试牛刀 【2.1】添加依赖 【2.2】添加application.yml配置文件修改端口 【2.3】创建实体类User 【2.4】创建控制器 【2.5】创建启动类 【注意】不必创建前端页面 3、规范返回值格式&#xff1a; 3.1添加ResultCode工具类 3.2添加Resul…

NASA数据集:ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高,第 3 版

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Gridded Antarctic and Arctic Land Ice Height V003 简介 ATLAS/ICESat-2 L3B 南极和北极网格陆地冰高&#xff0c;第 3 版 ATL14 和 ATL15 将 ATLAS/ICESat-2 L3B 年度陆地冰…

【蓝桥杯省赛真题55】Scratch找不同游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

scratch找不同游戏 第十五届青少年蓝桥杯scratch编程选拔赛真题解析 PS&#xff1a;其实这题在选拔赛里面就出现过类似的题目&#xff0c;只是难度提升了一点&#xff0c;具体可以见【蓝桥杯选拔赛真题84】Scratch找不同游戏 第十五届蓝桥杯scratch图形化编程 少儿编程创意编…

java日志门面之JCL和SLF4J

文章目录 前言一、JCL1、JCL简介2、快速入门3、 JCL原理 二、SLF4J1、SLF4J简介2、快速入门2.1、输出动态信息2.2、异常信息的处理 3、绑定日志的实现3.1、slf4j实现slf4j-simple和logback3.2、slf4j绑定适配器实现log4j3.2、Slf4j注解 4、桥接旧的日志框架4.1、log4j日志重构为…

通过队列实现栈

请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int to…

Android源码管理

文章目录 需求及场景需求困难疑惑点 源码管理方式及过程基本仓库管理方式 常用源码git 命令git init添加.gitignoregit add allgit add 文件名称git commit -a -m "提交内容说明"git statusgit loggit reset --hardgit clean -fd实际场景&#xff0c;从一个项目切换到…

大屏走马灯与echarts图表柱状图饼图开发小结

一、使用ant-design-vue的走马灯(a-carousel)注意事项 <!-- 左边的轮播图片 --><a-carousel :after-change"handleCarouselChange" autoplay class"carousel" :transition"transitionName"><div v-for"(item, index) in it…