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

相关推荐

  1. C#——系统学习对象

    2024-03-29 16:14:04       42 阅读
  2. C++系列十六:对象

    2024-03-29 16:14:04       60 阅读
  3. 对象C++)

    2024-03-29 16:14:04       68 阅读
  4. [C++]对象

    2024-03-29 16:14:04       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 16:14:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 16:14:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 16:14:04       82 阅读
  4. Python语言-面向对象

    2024-03-29 16:14:04       91 阅读

热门阅读

  1. 笔记82:关于 C++ 中的 swap 函数

    2024-03-29 16:14:04       40 阅读
  2. SQL中如何添加数据【保姆】

    2024-03-29 16:14:04       36 阅读
  3. sql server用nest typeorm实现索引的方式

    2024-03-29 16:14:04       38 阅读
  4. cesium NearFarScalar pixelOffsetScaleByDistance

    2024-03-29 16:14:04       40 阅读
  5. Compose UI 之 FloatingActionButton 按钮

    2024-03-29 16:14:04       40 阅读
  6. Docker 四种镜像制作方式

    2024-03-29 16:14:04       42 阅读
  7. qt.如何学习

    2024-03-29 16:14:04       32 阅读
  8. 软件速成书的神奇之处

    2024-03-29 16:14:04       34 阅读
  9. 非root用户安装git lfs(git大文件)命令记录

    2024-03-29 16:14:04       42 阅读
  10. PDF按行&页读取文字

    2024-03-29 16:14:04       39 阅读