多态和方法重写
掌握多态,通过方法重写创建灵活且可复用的代码
多态和方法重写 是 CoddyKit 上的免费 C# Academy 课时。 这是第 7 节课,共 7 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 7 节课。
多态简介
多态与方法重写
欢迎来到下一课!在本课中,您将学习多态这一面向对象编程的核心概念,以及如何通过重写方法来编写灵活且可复用的代码。让我们开始吧!

什么是多态?
什么是多态?
多态意味着“多种形式”,它允许将不同类的对象视为同一个基类的对象。这样可以让您的代码更加灵活并且易于复用。
示例:同一个方法可以根据其处理的对象类型而表现出不同的行为。
要点:在 C# 中,可以通过方法重写和接口实现多态。
理解方法重写
理解方法重写
方法重写允许派生类为基类中已经定义的方法提供特定的实现。在基类中使用 virtual 关键字,在派生类中使用 override 关键字。示例:
提示:无论对象的引用类型是什么,方法重写都能确保调用适用于该对象的正确方法。
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.Speak(); // Outputs: The dog barks.
myCat.Speak(); // Outputs: The cat meows.
}
}
使用多态
使用多态
多态允许您通过通用接口编写可处理不同类型对象的代码。示例:
要点:多态可以帮助您编写更加通用且易于复用的代码。
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal[] animals = { new Dog(), new Cat() };
foreach (Animal animal in animals) {
animal.Speak(); // Calls the appropriate method for each object
}
}
}
结合重写使用基础关键字
结合重写使用基础关键字
base 关键字用于在重写的方法中调用基类的方法。示例:
提示:如果希望在重写的方法中保留基类的功能,请使用 base。
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
base.Speak(); // Calls the base class method
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
}
}
抽象类和方法
抽象类和方法
抽象类为派生类提供蓝图。抽象类可以包含抽象方法,这些方法必须在派生类中重写。示例:
要点:抽象方法要求派生类提供自己的实现。
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
}
}
练习挑战
练习挑战
创建一个包含抽象方法 CalculateArea() 的抽象类 Shape。派生出 Rectangle 和 Circle 类,并实现 CalculateArea()。示例:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 4, Height = 5 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
多态最佳实践
多态最佳实践
以下是一些最佳实践:
- 使用多态简化代码并避免重复。
- 仅重写那些需要在派生类中实现特定行为的方法。
- 使用抽象类和方法,为派生类提供共享的接口。
提示:多态可以让代码更易于扩展和维护。
太棒了!
太棒了!
恭喜您!您已经学会了如何使用多态和方法重写来编写灵活且可复用的代码。在下一课中,我们将学习如何使用接口来实现抽象并实现多种行为。让我们继续编写代码吧!

常见问题解答
「多态和方法重写」课时是免费的吗?
是的 — 「多态和方法重写」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 7 节课。
「多态和方法重写」这节课中我会学到什么?
掌握多态,通过方法重写创建灵活且可复用的代码 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C# Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 7 节课,共 7 节。
「多态和方法重写」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C# Academy 课中编写并运行代码吗?
能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。