C#——系统学习(类与对象)

类(Class)

定义与作用: 类是C#中的一种用户自定义类型,它是面向对象编程的核心元素之一。类是一种蓝图或者模板,它描述了一类具有相同特性和行为的事物。类通常包含以下部分:

  1. 字段(Fields):类中直接定义的变量,用于存储对象的状态或属性,如:

    private string _name;
  2. 属性(Properties):提供对字段的封装访问,常用于对外暴露对象的状态,同时可以加入验证或其他逻辑:

    public string Name
    {get { return _name; }set { _name = value; }
    }
  3. 方法(Methods):定义对象的行为,即类所能执行的操作:

    public void Eat(string food)
    {Console.WriteLine($"{Name} is eating {food}.");
    }
  4. 构造函数(Constructors):特殊的方法,在创建类的新实例时自动调用,用于初始化对象的状态:

    public Dog(string name)
    {_name = name;
    }
  5. 事件(Events):允许类向外界发送通知,其他代码可以通过订阅事件来响应类内部发生的特定情况:

    public event EventHandler Barked;protected virtual void OnBarked()
    {Barked?.Invoke(this, EventArgs.Empty);
    }
  6. 索引器(Indexers):使类表现得像数组一样,可以通过下标访问或修改类的成员:

    public string this[int index]
    {get => Tricks[index];set => Tricks[index] = value;
    }
    private List<string> Tricks { get; set; } = new List<string>();
  7. 抽象方法和虚方法(Abstract and Virtual Methods):用于实现多态性,抽象方法在抽象类中定义但不提供具体实现,子类必须重写;虚方法允许子类重写父类的行为:

    public abstract void PerformTrick();
    public virtual void Sleep()
    {Console.WriteLine($"{Name} is sleeping.");
    }

对象(Objects / Instances)

创建与作用: 对象是类的实例,是根据类的蓝图创建的具体实体。当你使用new关键字时,就会在内存中为对象分配空间,并通过构造函数初始化对象的属性。

// 创建Dog类的一个对象实例
Dog myDog = new Dog("Fido");// 设置或获取对象的属性
myDog.Name = "Rex"; // 通过属性改变对象的状态
string dogName = myDog.Name; // 读取对象的状态// 调用对象的方法
myDog.Eat("bones"); // 执行对象的行为// 订阅和处理事件
myDog.Barked += Dog_Barked;// 虚方法和抽象方法的多态性示例
Animal animal = new Dog("Buddy");
animal.PerformTrick(); // 如果Animal是抽象类且有PerformTrick抽象方法,Dog会覆盖此方法private void Dog_Barked(object sender, EventArgs e)
{Console.WriteLine($"The dog has barked!");
}

通过类和对象,C#程序可以有效地组织数据和功能,使得代码易于维护和扩展,同时利用继承、封装和多态等面向对象的特性,提高代码的复用性和灵活性。

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

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

相关文章

JAVA面试八股文之集合

JAVA集合相关 集合&#xff1f;说一说Java提供的常见集合&#xff1f;hashmap的key可以为null嘛&#xff1f;hashMap线程是否安全, 如果不安全, 如何解决&#xff1f;HashSet和TreeSet&#xff1f;ArrayList底层是如何实现的&#xff1f;ArrayList listnew ArrayList(10)中的li…

Day24:私信列表、私信详情、发送私信

测试用户&#xff1a;用户名aaa 密码aaa 查询当前用户的会话列表&#xff1b;每个会话只显示一条最新的私信&#xff1b;支持分页显示。 首先看下表结构&#xff1a; conversation_id: 用from_id和to_id拼接&#xff0c;小的放前面去&#xff08;因为两个人的对话应该在一个会…

Siemens S7-1500TCPU 运动机构系统功能简介

目录 引言&#xff1a; 1.0 术语定义 2.0 基本知识 2.1 运动系统工艺对象 2.2 坐标系与标架 3.0 运动机构系统类型 3.1 直角坐标型 3.2 轮腿型 3.3 平面关节型 3.4 关节型 3.5 并联型 3.6 圆柱坐标型 3.7 三轴型 4.0 运动系统的运动 4.1 运动类型 4.1.1 线性运动…

ssh 启动 docker 中 app, docker logs 无日志

ssh 启动 app, 标准输出被重定向 ssh 客户端&#xff0c;而不是 docker 容器的标准输出。只需要在启动时把app 标准输出重定向到 docker标准输出。 测试如下&#xff1a; 1.启动 docker docker run -it -p 60022:22 --name test test:v4 bash -c "service ssh restart;…

C# —— 系统学习(控制结构)

下面时所有控制结构的实例与解析 条件分支结构 - if-else int score 85; if (score > 90) {Console.WriteLine("优秀"); else if (score > 80) {Console.WriteLine("良好"); } else {Console.WriteLine("合格"); } 这段代码使用的是if-…

新手体验OceanBase社区版V4.2:离线部署单节点集群

本文源自OceanBase用户的分享 先简单总结如下&#xff1a; 1.本文适合初学者体验OceanBase社区版 v4.2.2 2.仅需准备一台配置为2C/8G的Linux虚拟机 3.通过离线方式安装&#xff0c;以便更直观地了解安装过程 一、Linux系统准备 在宿主机(即你的windows PC电脑)上安装vbox软…

【JavaEE初阶系列】——多线程案例四——线程池

目录 &#x1f6a9;什么是线程池 &#x1f388;从池子中取效率大于新创建线程效率(why) &#x1f6a9;标准库中的线程池 &#x1f388;为什么调用方法而不是直接创建对象 &#x1f388;工厂类里的方法 &#x1f4dd;newCachedThreadPool() &#x1f4dd;newFixedThread…

【微服务】Nacos(配置中心)

文章目录 1.AP和CP1.基本介绍2.说明 2.Nacos配置中心实例1.架构图2.在Nacos Server加入配置1.配置列表&#xff0c;加号2.加入配置3.点击发布&#xff0c;然后返回4.还可以编辑 3. 创建 Nacos 配置客户端模块获取配置中心信息1.创建子模块 e-commerce-nacos-config-client50002…

Matlab之求直角坐标系下两直线的交点坐标

目的&#xff1a;在直角坐标系下&#xff0c;求两个直线的交点坐标 一、函数的参数说明 输入参数&#xff1a; PointA&#xff1a;直线A上的点坐标&#xff1b; AngleA&#xff1a;直线A的倾斜角&#xff0c;单位度&#xff1b; PointB&#xff1a;直线B上的点坐标&#xf…

LeetCode - 股票平滑下跌阶段的数目(分组循环)

2110. 股票平滑下跌阶段的数目 当数组中的数字满足这个prices[i] 1 prices[i - 1]条件之后&#xff0c;就是平滑下降的阶段&#xff0c;也就是将数组中连续的数字进行一个分组。每次计算一个分组即可。 class Solution { public:long long getDescentPeriods(vector<int&…

如何写好一篇文档?

&#x1f304; 前言 什么是好的文档&#xff1f;在我看来&#xff0c;不减分地表达清楚作者的意图&#xff0c;即是一个不错的文档&#xff0c; 从作者角度上讲&#xff0c;能够让读者快速、清晰理解作者要表达的内容。 从读者角度上讲&#xff0c;读者能够快速、清晰地了解到…

分布式部署LNMP+WordPress

需要四台虚拟机&#xff0c;实际上&#xff0c;我们只需要操作三台 一个数据库&#xff0c;一个nginx&#xff0c;一个php&#xff0c;还需要准备一个软件包wordpress-4.7.3-zh_C 首先配置nginx的服务环境 [rootnginx ~]# vi /usr/local/nginx/conf/nginx.conf 修改文件中的loc…

蓝桥杯23年第十四届省赛真题-三国游戏|贪心,sort函数排序

题目链接&#xff1a; 1.三国游戏 - 蓝桥云课 (lanqiao.cn) 蓝桥杯2023年第十四届省赛真题-三国游戏 - C语言网 (dotcpp.com) 虽然这道题不难&#xff0c;很容易想到&#xff0c;但是这个视频的思路理得很清楚&#xff1a; [蓝桥杯]真题讲解&#xff1a;三国游戏&#xff0…

2. Java基本语法

文章目录 2. Java基本语法2.1 关键字保留字2.1.1 关键字2.1.2 保留字2.1.3 标识符2.1.4 Java中的名称命名规范 2.2 变量2.2.1 分类2.2.2 整型变量2.2.3 浮点型2.2.4 字符型 char2.2.5 Unicode编码2.2.6 UTF-82.2.7 boolean类型 2.3 基本数据类型转换2.3.1 自动类型转换2.2.2 强…

数字图像处理——直方图的均衡化

1.方法简介&#xff1a; 直方图均衡化通常用来增加许多图像的全局对比度&#xff0c;尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法&#xff0c;亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度&#xff0c;直方图均衡化通…

电源66319D控制方法

实现自动化控制&#xff0c;电源为基础的模块&#xff0c;下面为大家讲解电源66319D的控制逻辑。 新建底层控制逻辑 在文件basis_contorl.py中写入仪器控制底层代码&#xff0c;代码如下&#xff1a; import tkinter.messagebox import pyvisaclass InstrumentControl(object…

探析Zoho Projects项目管理系统功能优势

世上万物&#xff0c;都是有难有易&#xff0c;有简单&#xff0c;也有复杂&#xff0c;项目也不例外。面对复杂的项目&#xff0c;应该如何有效管理呢&#xff1f;答案无疑是项目管理系统&#xff0c;项目管理系统有哪些强大的功能&#xff1f;Zoho Projects项目管理系统的功能…

Qt中常用宏定义

Qt中常用宏定义 一、Q_DECLARE_PRIVATE(Class)二、Q_DECLARE_PRIVATE_D(Dptr, Class)三、Q_DECLARE_PUBLIC(Class)四、Q_D(Class) 和 Q_Q(Class) 一、Q_DECLARE_PRIVATE(Class) #define Q_DECLARE_PRIVATE(Class) inline Class##Private* d_func() { # 此处的 d_ptr 是属于QOb…

【数据分层方法论】初稿

一般标准数据架构有(ODS、DWD、DWS、DIM、ADS) 一般数据构架问题&#xff1a; 1.架构定位与边界不清楚&#xff0c;导致ADS烟囱化开发&#xff1b; 2.ADS集市缺少统一规划、混乱低效&#xff1b; 3.ADS集市指标口径急需要统一&#xff1b; 4.缺少高质量的设计标准&#xff0c;…

LeetCode 面试经典150题 290.单词规律

题目&#xff1a; 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 思路&#xff1a;一一映射需要用到…