c#中抽象类与抽象方法
时间: 2025-03-19 15:05:27 浏览: 46
在C#中,**抽象类**和**抽象方法**是用来支持面向对象编程中的多态性和代码复用的重要工具。
### 抽象类
抽象类是一种特殊的类,它不能直接实例化。也就是说,你无法通过`new`关键字创建一个抽象类的对象。它的目的是作为其他类的基础模板,并提供一些通用的功能以及强制派生类实现特定的行为。
#### 特点:
1. **包含部分功能**:可以有普通成员函数、字段等非抽象内容。
2. **标记为abstract**:需要使用`abstract`修饰符声明该类及其内部某些成员(如抽象方法)。
3. **必须被继承才能完全实现其所有功能**:如果某个类里存在未完成的具体操作(即仅有定义而无实际主体),则这个类也需要设置成抽象形式。
### 抽象方法
抽象方法只给出方法的名称及参数列表而不提供具体的实现细节。只有当子类覆盖此方法时才会具备真正的作用逻辑。因此,在定义的时候只需要写出返回值类型、名字还有括号内的形参即可,不需要大括号包围的内容块。
#### 使用规则:
- 只能存在于抽象类之中;
- 子类必须要么提供完整版的方法体(即覆写),要么也把自己设为抽象型别。
### 示例代码:
```csharp
// 定义抽象基类 Animal
public abstract class Animal {
// 普通属性 和 非抽象方法
public string Name { get; set; }
public void Eat() {
Console.WriteLine($"{Name} is eating.");
}
// 抽象方法 Speak - 具体行为由子类决定
public abstract void Speak();
}
// 继承自Animal并实现了Speak()
public class Dog : Animal {
public override void Speak(){
Console.WriteLine("Woof! Woof!");
}
}
```
在这个例子中,我们首先建立了名为 `Animal` 的抽象类,并添加了一个普通的吃东西方法 (`Eat`) 还有一个未确定如何发声的方法(`Speak`)。然后又构造了代表狗这一概念的具体类别叫做 `Dog`, 并对动物发出声音的方式进行了明确指定——也就是让小狗汪汪叫。
阅读全文
相关推荐














