C#编程:理解虚方法与重写

需积分: 10 0 下载量 108 浏览量 更新于2024-09-06 收藏 169KB PDF 举报
"虚方法和重写.pdf" 文件主要探讨了C#编程语言中的虚方法(virtual methods)和重写(override),这是面向对象编程中的关键概念,特别是当涉及到类的继承时。 在C#中,虚方法允许子类改变或扩展父类的行为。当在父类中声明一个方法为`virtual`时,这意味着这个方法可以被子类重写。如果子类选择不重写,那么默认情况下,它仍然会继承并执行父类的虚方法。重写是在子类中使用`override`关键字来实现的,确保子类的方法覆盖了父类的同名虚方法。 以下是对这些概念的详细解释: 1. **虚方法(Virtual Methods)**: - 在C#中,使用`virtual`关键字标记的方法可以在子类中被重写。这使得在运行时可以选择调用哪个版本的方法,即父类的还是子类的。 - 虚方法的声明通常在基类中进行,以便子类可以自由地提供自己的实现。 ```csharp public virtual void Show() { Console.WriteLine("我的父类show方法"); } ``` 2. **重写(Override)**: - 子类可以使用`override`关键字重写父类的虚方法,从而提供自己的实现。 - 这种做法常用于当子类需要改变或扩展父类行为的情况下。 ```csharp public override void Show() { Console.WriteLine("我是老师~~我的姓名" + this.Name + ",我的年龄是:" + this.Age + ",我的性别是:" + this.Gender); } ``` - 如果在子类中调用`base.show()`,则会执行父类的`Show`方法,否则会执行子类重写后的`Show`方法。 3. **示例代码**: - 文件中的代码展示了如何定义一个`People`类作为基类,其中有一个`Show`方法被声明为虚方法。 - 另一个类`Student`继承自`People`,并重写了`Show`方法,提供了不同的输出内容。 ```csharp class Student : People { public Student() {} public Student(string name, int age, bool sex) : base(name, age, sex) {} public override void Show() { // ... } } ``` 4. **应用场景**: - 虚方法和重写在实现多态性时非常有用。多态允许你使用一个基类的引用或接口调用子类的特定方法,从而允许程序更加灵活和可扩展。 - 在设计模式如策略模式、模板方法模式中,虚方法和重写也发挥着核心作用。 理解并熟练运用虚方法和重写是提升C#编程技能的关键,它们可以帮助你创建更具弹性和可维护性的代码结构。在处理继承关系和类层次时,这两个特性能够帮助你更好地控制和定制对象的行为。