7.2 C#的类全解(概念、声明、成员、修饰符、重载)


7.2.1 类的概念

类(Class)是面向对象编程(OOP)中的核心概念之一,它作为创建对象的模板或蓝图,定义了对象的属性(数据)和方法(行为)。以下是类的一些关键特性和组成:

类的关键特性

  1. 抽象:类是对现实世界中事物的抽象,它定义了事物的通用特征和行为。

  2. 封装:类将数据和操作这些数据的方法组合在一起,并隐藏内部的实现细节,只对外提供有限的接口。

  3. 继承:类可以通过继承机制复用代码,子类可以继承父类的属性和方法。

  4. 多态:类可以实现多态性,即同一个方法在不同的对象中可以有不同的实现。

类的组成

  1. 数据成员

    • 常量:在类中不会被修改的变量。
    • (Field):类中用于存储数据的变量。
  2. 函数成员

    • 方法(Method):类中定义的函数,用于执行类的行为。
    • 属性(Property):用于控制对类中字段的访问。
    • 事件(Event):用于处理对象间的通信。
    • 索引器(Indexer):允许对象被索引,就像数组一样。
    • 运算符(Operator):允许对类类型使用标准的C#运算符。
    • 构造函数:用于初始化新创建的对象。
      • 实例构造函数:初始化非静态成员。
      • 静态构造函数:初始化静态成员。
    • 析构函数(Destructor):在对象被销毁前执行清理工作。
  3. 嵌套类型:类中可以定义的其他类或结构。

示例代码

以下是C#中定义一个简单的类的例子:

using System;

// 定义一个类
public class Person
{
   
   
    // 数据成员
    private string name;
    public int Age {
   
    get; set; }
    
    // 函数成员
    public void Eat()
    {
   
   
        Console.WriteLine("Eating");
    }
    
    public void Sleep()
    {
   
   
        Console.WriteLine("Sleeping");
    }
    
    // 构造函数
    public Person(string name)
    {
   
   
        this.name = name;
    }
    
    // 静态构造函数
    static Person()
    {
   
   
        Console.WriteLine("Static constructor executed.");
    }
    
    // 嵌套类型
    public class InnerClass
    {
   
   
        public void Display()
        {
   
   
            Console.WriteLine("Inner class method.");
        }
    }
}

public class Program
{
   
   
    public static void Main()
    {
   
   
        // 创建Person类的实例
        Person person = new Person("Alice");
        person.Eat();
        person.Sleep();
        
        // 创建嵌套类的实例
        Person.InnerClass innerClass = new Person.InnerClass();
        innerClass.Display();
    }
}

在这个示例中,Person类有两个数据成员(nameAge),两个方法(EatSleep),一个构造函数,一个静态构造函数和一个嵌套类型(InnerClass)。Main方法展示了如何创建Person对象和InnerClass对象的实例。

类是面向对象编程中实现封装和抽象的基础,是构建软件时组织代码的逻辑单元。

7.2.2 类的声明

在C#中,可以通过类修饰符来控制类的可见性和可访问性。以下是一些常用的类修饰符:

  1. public

    • 描述:类可以被任何其他类访问。
    • 例如:public class Car { ... }
  2. private

    • 描述:类只能在定义它的程序集中访问。
    • 例如:private class Car { ... }(不常用,因为通常嵌套类使用private)
  3. internal

    • 描述:类只在当前程序集中可访问。
    • 例如:internal class Car { ... }
  4. protected

    • 描述:类可以被定义它的类以及其派生类访问(不常用于类本身,常用于成员)。
    • 例如:protected class Car { ... }(不常用,因为通常继承中使用protected)
  5. static

    • 描述:类不能实例化,所有成员都是
C# 中的修饰符关键字包含访问修饰符,二者在概念、作用和范围上存在差异。 修饰符关键字是一个更宽泛的概念,它可分为访问修饰符、方法修饰符、约束修饰符和其他修饰符别。修饰符关键字不仅能控制对象的访问权限,还能对、方法、属性等的行为、实现方式、型参数的特性等方面进行修饰。例如,`abstract` 修饰符指示被修改内容的实现已丢失或不完整,可用于、方法、属性等;`async` 修饰符可将方法、lambda 表达式或匿名方法指定为异步;`const` 关键字用于声明常量字段或常量局部变量等[^2][^3]。 访问修饰符修饰符关键字中的一个子集,其主要作用是控制对象的访问权限。访问修饰符包括 `private`(私有,访问限于包含)、`protected`(受保护,访问限于包含或派生自包含型)、`internal`(程序集内部,访问限于当前程序集)、`protected internal`(只有本程序内或者继承于该型可以访问)、`public`(公开,访问不受限制)以及 `private protected`(自 C# 7.2 之后可用,访问限于包含或当前程序集中派生自包含型)。可以使用访问修饰符的对象有 `namespace`(命名空间)、`class`()、`struct`(结构)、`enum`(枚举)、`interface`(接口)、`delegate`(委托)、`function`(函数)和变量等[^1][^3]。 ### 代码示例 ```csharp // 定义一个公共 public class MyClass { // 私有字段,只能在内部访问 private int privateField; // 受保护字段,可在内部和派生中访问 protected int protectedField; // 程序集内部字段,只能在当前程序集内访问 internal int internalField; // 公开字段,可在任何地方访问 public int publicField; // 抽象方法,需要在派生中实现 public abstract void AbstractMethod(); // 异步方法 public async Task AsyncMethod() { await Task.Delay(1000); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值