- 抽象类(Abstract Class) 抽象类是不能被实例化的类,它只能被继承。抽象类被设计为用作其他类的基类,并且必须由子类提供实现。换句话说,抽象类只定义接口和行为规范,具体实现必须由子类完成(就是说:基类先定义方法没有功能,只能子类重写)。
- 以下是一个简单的抽象类的例子:
-
public abstract class Animal { public virtual void Eat() { Console.WriteLine("Animal eating..."); } public abstract void MakeSound(); } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("汪汪"); } } static void Main(string[] args) { Animal animal = new Dog(); // 把子类对象赋值给父类变量 animal.Eat(); // 调用虚拟方法 animal.MakeSound(); // 调用抽象方法 }
*抽象类
Animal
定义了两个方法:一个是虚拟方法Eat()
,类似于默认实现,子类可以选择重写;另一个是抽象方法MakeSound()
,即未被实现的方法,必须由子类实现。
- 虚拟类(Virtual Class) 虚拟类是可以被实例化的类,但是它也可以被继承。虚拟类与抽象类一样,允许子类覆盖其方法、属性或事件,但子类并非必须提供实现(基类也可以实现功能方法)。
- 以下是一个简单的虚拟类的例子:
-
public class Shape { public virtual void Draw() { Console.WriteLine("Drawing shape..."); } } public class Circle : Shape { public override void Draw() { Console.WriteLine("Drawing circle..."); } } static void Main(string[] args) { Shape shape = new Circle(); // 把子类对象赋值给父类变量 shape.Draw(); // 调用圆形的 Draw() 方法 }
虚拟类
Shape
定义了一个虚拟方法Draw()
,它与抽象类不同的是子类不需要实现,而是可以选择重写该方法。
- 私有类(Private Class) 私有类是只能在同一命名空间的程序中使用,并且无法从其他程序集中进行访问。用于封装辅助类或需要在程序集内部使用的开发工具。
- 以下是一个简单的私有类的例子:
-
namespace MyProgram { class Program { static void Main(string[] args) { Calculator calculator = new Calculator(); int result = calculator.Add(2, 3); Console.WriteLine(result); } private class Calculator { public int Add(int a, int b) { return a + b; } } } }
私有类
Calculator
定义了一个方法Add()
,在Program
类的内部实例化,并且调用Add()
方法。
总结:抽象类、虚拟类和私有类是 C# 中常见的类的特性。它们分别用于提供接口规范、行为的默认实现或子类重写、以及封装一些辅助功能等。使用这些特性可以更加灵活地设计和实现 C# 类库中的各种类型。