C#面向对象:虚方法、方法隐藏与类的继承

需积分: 9 0 下载量 164 浏览量 更新于2024-07-13 收藏 3.19MB PPT 举报
"面向对象的C#基础,包括虚方法、方法隐藏、类的定义与使用、继承、多态性、接口、抽象方法等概念" 在C#编程中,面向对象编程是核心特性之一,它主要依赖于三个基本概念:封装、继承和多态。本节我们将深入探讨这些概念以及它们在C#中的实现方式。 首先,我们来看虚方法和方法隐藏。虚方法是通过在方法声明前加上`virtual`关键字来实现的,这允许子类重写或扩展基类的方法。例如: ```csharp public class BaseC { public virtual void DoWork() { Console.WriteLine("基类的方法"); } } public class DerivedC : BaseC { public override void DoWork() { Console.WriteLine("派生类的方法"); } } ``` 在这个例子中,`DerivedC`的`DoWork`方法覆盖了`BaseC`的`DoWork`方法。当通过`DerivedC`的实例调用`DoWork`时,将执行派生类的实现。 方法隐藏则是使用`new`关键字,它并不涉及多态,而是创建了一个新方法,该方法在派生类中替换基类同名的方法。但是,如果通过基类引用调用这个方法,将仍然执行基类的版本: ```csharp public class BaseC { public void DoWork() { Console.WriteLine("基类的方法"); } } public class DerivedC : BaseC { public new void DoWork() { Console.WriteLine("派生类的方法"); } } BaseC baseRef = new DerivedC(); baseRef.DoWork(); // 输出 "基类的方法" ``` 接下来,我们关注C#的面向对象特性。类是定义对象的模板,它包含数据成员(如字段、属性)和行为成员(如方法)。访问修饰符如`private`和`public`用于控制成员的可见性和访问权限。`private`成员仅对类内部可见,而`public`成员可以被任何代码访问。 构造函数用于初始化类的新实例,静态成员属于类本身而非类的实例,静态类则不能被实例化。命名空间是一种组织代码的方式,有助于避免命名冲突。 类的继承允许创建新的类,这些类从已有的类派生并扩展其功能。使用`:`后跟基类名称来指定继承关系。继承可以实现代码复用,且子类可以重写基类的方法以提供不同的行为。例如: ```csharp public class Animal { public virtual void Speak() { Console.WriteLine("动物发出声音"); } } public class Dog : Animal { public override void Speak() { Console.WriteLine("狗汪汪叫"); } } ``` 多态性是面向对象的另一个关键特性,它允许使用基类引用调用子类的方法。这样,你可以编写通用代码处理多种类型的对象,而无需知道具体的类型。接口是另一种多态实现方式,它定义了一组方法签名,任何类都可以实现接口,从而保证具有相同接口的类具有相同的行为。 抽象类和接口在表示抽象概念时有所不同。抽象类可以包含实现,而接口只能定义方法签名。抽象方法在抽象类中声明但没有实现,强制子类提供实现。例如: ```csharp public abstract class Shape { public abstract double GetArea(); } public class Circle : Shape { public double Radius { get; set; } public override double GetArea() { return Math.PI * Radius * Radius; } } ``` 最后,实践任务通常会引导学生设计和实现类,如创建一个`Student`类,包含`Name`、`Age`、`Class`和`ID`等字段,以及相关的访问器方法。 总结起来,理解面向对象的C#编程需要掌握类的定义与使用、继承、多态、接口以及抽象类和方法,这些都是构建复杂系统和高效代码的基础。