C# 中的面向对象:封装、继承与多态

需积分: 21 0 下载量 81 浏览量 更新于2024-07-13 收藏 848KB PPT 举报
"本文主要介绍了C#编程语言中的委托实例化、面向对象的三大特性——封装、继承和多态,并提供了相关的代码示例。" 在C#编程中,委托是一种类型,代表一个方法的指针,允许我们像传递变量一样传递方法。在给定的描述中,展示了如何实例化一个委托对象`p`。首先,创建了一个名为`MyDeClass`的类,该类中有一个名为`fun1`的方法,这个方法接受一个`int`参数且返回类型为`void`。然后,通过`mydelegate`委托类型实例化了`p`,并将`obj.fun1`绑定到`p`上。这里的关键是,`fun1`的方法签名必须与`mydelegate`的定义相匹配,即方法的参数列表和返回类型必须一致。 接下来,我们转向面向对象编程的核心概念: 1. 封装:这是面向对象编程的基础,它将数据和操作绑定在一起,并控制外部如何访问这些数据。在C#中,我们通过访问修饰符(如`private`, `public`, `protected`等)来实现封装,隐藏实现细节,只暴露必要的接口。例如,类`Car`可能有一个私有的`color`字段,但提供一个公共的`SetColor`方法来改变颜色,这样外部代码就不能直接修改`color`,而是通过指定的方法进行操作。 2. 继承:继承允许子类继承父类的属性和方法,从而实现代码复用。在C#中,子类通过冒号(`:`)表示继承,如`class TrashCar : Car`,表明`TrashCar`是`Car`的子类。子类可以访问并重写父类的非私有成员。例如,`TrashCar`可以增加新的方法或覆盖`Car`的行为。 3. 多态:多态是指父类型的引用可以指向子类型对象的能力,这允许我们编写更加通用的代码。在C#中,多态可以通过方法重写(`override`关键字)和抽象类及接口实现。例如,`Car`类有一个`PushBreak`方法,而`TrashCar`虽然继承了这个方法,但可能需要有自己的实现。 代码示例展示了如何创建子类`TrashCar`并实例化一个`TrashCar`对象`myCar`。在`MyApp`类的`Main`方法中,`myCar`对象可以调用`AddOil`和`PushBreak`方法,这体现了多态性,因为`PushBreak`方法可能是从`Car`类继承的,而`AddOil`可能是`TrashCar`特有的。 另外,关于继承的注意事项: - 派生类会继承基类除构造函数和析构函数外的所有成员。 - 创建派生类实例时,会先调用基类的构造函数,通常默认调用无参数的构造函数。 - 使用`base`关键字可以显式调用基类的构造函数,如`public TrashCar(int i) : base(i)`。 C#的委托实例化和面向对象特性使得代码更易于组织、维护和扩展,提供了强大的功能来构建复杂的软件系统。