C# 零基础入门篇(6.类的详细讲解)

## 1. 类的基本概念

类是面向对象编程中实现封装和抽象的基础,是构建软件时组织代码的逻辑单元。它定义了一组具有相同属性和方法的对象的蓝图。

## 2. 类的声明

在C#中,类的声明通常包括以下几个部分:

- **访问修饰符**:如`public`、`private`、`internal`等,用于控制类的访问权限。
- **类名**:类的名称,通常采用大驼峰命名法。
- **基类**(可选):通过`:`继承自某个基类。
- **类体**:包含类的成员,如字段、方法、属性等。

示例:

```
public class Person
{
    // 类的成员
}
```

## 3. 类的成员

类的成员是类的组成部分,包括字段、方法、属性、构造函数、析构函数、事件等。

### 3.1 字段

字段是类中声明的变量,用于存储数据。字段可以是静态的(类级别)或实例的(对象级别)。

- **实例字段**:每个对象实例拥有自己的副本。
- **静态字段**:属于类,而不是类的任何特定对象。
- **常量字段**:值在初始化后不能改变。
- **只读字段**:可以在构造函数中初始化一次,之后不能修改。

示例:

```
public class Person
{
    public const int MaxAge = 150; // 常量字段
    public string Name; // 实例字段
    private int _age; // 私有实例字段
    public readonly int ID; // 只读字段
}
```

### 3.2 方法

方法是类中定义的函数,用于执行特定的操作。方法可以是静态的或实例的。

- **静态方法**:通过类直接调用,不依赖于类的实例。
- **实例方法**:需要类的实例来调用。

示例:

```
public class Calculator
{
    public static int Add(int a, int b) // 静态方法
    {
        return a + b;
    }

    public int Multiply(int a, int b) // 实例方法
    {
        return a * b;
    }
}
```

### 3.3 属性

属性提供了访问类中字段的安全方式,可以有`get`和`set`块。

示例:

```
public class Product
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}
```

## 4. 类的继承与多态

### 4.1 继承

继承是面向对象编程的核心概念之一,允许一个类(派生类)继承另一个类(基类)的成员。

示例:

```
class Triangle
{
    public virtual double ComputeArea(int a, int b, int c)
    {
        double s = (a + b + c) / 2.0;
        return Math.Sqrt(s * (s - a) * (s - b) * (s - c));
    }
}

class RightAngledTriangle : Triangle
{
    public override double ComputeArea(int a, int b, int c)
    {
        return a * b / 2.0;
    }
}
```

### 4.2 多态

多态允许派生类重写基类的方法,并在运行时动态调用派生类的方法。

示例:

```
Triangle tri = new Triangle();
Console.WriteLine(tri.ComputeArea(2, 5, 6));

RightAngledTriangle rat = new RightAngledTriangle();
Console.WriteLine(rat.ComputeArea(3, 4, 5));
```

## 5. 类的封装

封装是将类的成员隐藏在类的内部,仅通过公共接口暴露必要的功能。例如,通过私有字段和公共属性实现封装。

示例:

```
public class Person
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}
```

## 6. 类的实例化

类的实例化是通过`new`关键字创建类的对象。

示例:

```
Person person = new Person();
person.Name = "Alice";
```

## 7. 静态成员与实例成员

- **静态成员**:属于类本身,可以通过类名直接访问。
- **实例成员**:属于类的对象实例,需要通过对象访问。

示例:

```
public class MyClass
{
    public static int StaticField = 10;
    public int InstanceField = 20;
}

MyClass.StaticField; // 访问静态成员
MyClass myObject = new MyClass();
myObject.InstanceField; // 访问实例成员
```

## 8. 嵌套类

嵌套类是定义在另一个类内部的类。

示例:

```
public class OuterClass
{
    public class InnerClass
    {
        public void Display()
        {
            Console.WriteLine("Inner class method.");
        }
    }
}

OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.Display();
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值