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

news/2024/9/23 12:28:43/

类(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.ppmy.cn/news/1399833.html

相关文章

Ribbon简介

目录 一 、概念介绍 1、Ribbon是什么 2、认识负载均衡 2.1 服务器端的负载均衡 2.2 客户端的负载均衡 3、Ribbon工作原理 4、Ribbon的主要组件 IClientConfig ServerList ServerListFilter IRule Iping ILoadBalancer ServerListUpdater 5、Ribbon支持…

前端理论总结(css3)——页面布局方法

瀑布流 优点&#xff1a;节省空间&#xff0c;外表美观&#xff0c;更有艺术性 对于触屏设备非常友好&#xff0c;通过向上滑动浏览 用户浏览时的观赏和思维不容易被打断&#xff0c;留存更容易 缺点&#xff1a;用户…

【开发总结】electron浏览器打开踩坑

在阅读文章时&#xff0c;读到了一篇关于electron开发桌面应用的入门文章&#xff0c;遂按照文章中的过程进行复现&#xff0c;原作者的开发环境时mac系统&#xff0c;笔者用的是windows系统&#xff0c;在开发过程中遇到了在浏览器中输入scheme打开应用程序的场景&#xff0c;…

Linux(centos7)部署hadoop集群

部署环境要求:已完成JDK环境部署、配置完成固定IP、SSH免费登录、防火墙关闭等。 1、下载、上传主机 官网:https://hadoop.apache.org 2、解压缩、创建软连接 解压: tar -zxvf hadoop-3.3.6.tar.gz软连接: ln -s /usr/local/apps/hadoop-3.3.6 hadoop3、文件配置 hadoo…

elasticsearch 8.12+kibana 8.12

准备工作&#xff1a;1.下载相关的安装包放到/usr/local/ES下面 elasticsearch下载地址:Download Elasticsearch | Elastic elasticsearch-head-master下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip node下载地址:Index of /dist/ kibana地址:Downl…

自动化更新包文件--shell脚本

自动化更新包文件--shell脚本 背景手动更包自动化更包 背景 作为一名实施工程师&#xff0c;当然也协助做些测试的工作&#xff0c;当产品功能开发后&#xff0c;研发会将本次迭代涉及的前后端包文件提供过来。有时会因为一些原因研发没法现场开发&#xff0c;那就需要我们配合…

【热门话题】Yarn:新一代JavaScript包管理器的安装与使用

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Yarn&#xff1a;新一代JavaScript包管理器的安装与使用引言一、Yarn的安装1. 系…

将没有时区的时间序列设置到某个特定的时区

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将没有时区的时间序列 设置到某个特定的时区 Series.dt.tz_localize() 选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.Series(pd.date_range("2024-03-29 10:00&q…