C# 类与对象详解


.NET学习资料

.NET学习资料

.NET学习资料


在 C# 编程中,类与对象是面向对象编程的核心概念。它们让开发者能够将数据和操作数据的方法封装在一起,从而构建出模块化、可维护且易于扩展的程序。下面将详细介绍 C# 中类与对象的相关知识。

一、类的定义

类是一种用户自定义的数据类型,它是对象的模板或蓝图。在 C# 中,使用class关键字来定义类。类可以包含字段、属性、方法、构造函数和事件等成员。

1.1 字段

字段是类中用于存储数据的变量。例如,定义一个表示人的类Person,可以包含姓名和年龄的字段:

csharp 复制代码
class Person
{
    public string Name;
    public int Age;
}

这里的Name和Age就是Person类的字段,public关键字表示这些字段可以从类的外部访问。

1.2 属性

属性提供了一种灵活的机制来读取、写入或计算私有字段的值。属性有get和set访问器。例如,将上述Person类的字段改为属性:

csharp 复制代码
class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}

在这个例子中,Name和Age属性通过get访问器返回私有字段的值,通过set访问器设置私有字段的值。这样可以在设置值时进行一些验证或额外的操作。

1.3 方法

方法是类中执行特定任务的代码块。例如,为Person类添加一个介绍自己的方法:

csharp 复制代码
class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public void Introduce()
    {
        Console.WriteLine($"我叫{Name},今年{Age}岁。");
    }
}

Introduce方法使用Console.WriteLine输出人的姓名和年龄信息。

1.4 构造函数

构造函数是一种特殊的方法,用于在创建对象时初始化对象的状态。构造函数的名称与类名相同,并且没有返回类型。例如,为Person类添加构造函数:

csharp 复制代码
class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    public Person(string n, int a)
    {
        name = n;
        age = a;
    }

    public void Introduce()
    {
        Console.WriteLine($"我叫{Name},今年{Age}岁。");
    }
}

这个构造函数接受两个参数n和a,用于初始化name和age字段。

二、对象的创建和使用

2.1 对象的创建

使用new关键字来创建类的对象。例如,创建Person类的对象:

csharp 复制代码
Person person = new Person("张三", 25);

这行代码创建了一个Person类的对象person,并通过构造函数初始化了其姓名为 "张三",年龄为 25。

2.2 对象的使用

创建对象后,可以通过对象访问其属性和方法。例如:

csharp 复制代码
Person person = new Person("张三", 25);
Console.WriteLine(person.Name);
person.Age = 26;
person.Introduce();

第一行代码创建对象并初始化。第二行通过对象person访问Name属性获取姓名并输出。第三行通过对象person修改Age属性的值。第四行调用person对象的Introduce方法,输出人的介绍信息。

三、类的继承

继承是面向对象编程的重要特性之一,它允许一个类(子类)继承另一个类(父类)的属性和方法。在 C# 中,使用冒号:来表示继承关系。例如:

csharp 复制代码
class Student : Person
{
    public string School { get; set; }

    public Student(string n, int a, string s) : base(n, a)
    {
        School = s;
    }

    public new void Introduce()
    {
        Console.WriteLine($"我叫{Name},今年{Age}岁,在{School}上学。");
    }
}

在这个例子中,Student类继承自Person类,它不仅拥有Person类的所有属性和方法,还新增了School属性和重写了Introduce方法。构造函数中使用base关键字调用父类的构造函数来初始化继承自父类的字段。

四、多态

多态是指同一个方法在不同的对象上调用时,可以表现出不同的行为。在 C# 中,多态主要通过方法重写和接口实现来实现。在上述Student类中重写Introduce方法就是多态的体现。当调用Student对象的Introduce方法时,执行的是Student类中重写后的方法,而调用Person对象的Introduce方法时,执行的是Person类中的方法。

五、总结

C# 中的类与对象是构建面向对象程序的基础。通过类的定义,可以将相关的数据和行为封装在一起,提高代码的可维护性和可复用性。对象则是类的具体实例,通过创建和使用对象,可以实现程序的各种功能。继承和多态进一步增强了面向对象编程的灵活性和扩展性。深入理解和掌握类与对象的概念和使用方法,对于成为一名优秀的 C# 开发者至关重要。随着学习的深入,可以进一步探索类的其他特性,如静态成员、嵌套类等,以开发出更复杂和强大的应用程序。

相关推荐
益莱储中国31 分钟前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc1 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu2 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger2 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者2 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
爱喝热水的呀哈喽3 小时前
HEJIAN RESEARCH
开发语言·matlab
白露与泡影3 小时前
后端 Java 面试核心八股汇总|高频面试题 + 解析,覆盖基础到进阶
java·开发语言·面试
xifangge20254 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL批量生成「潮汕英歌舞冰淇淋蛋糕&红桃粿咖啡」IP,固定角色形象批量出甜品商业效果图
开发语言·人工智能·python·prompt·aigc