OneBigLoser
OneBigLoser
发布于 2024-07-06 / 13 阅读
0
0

继承

基本概念

继承是面向对象编程的一种重要机制,它允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法。通过继承,子类可以复用父类的代码,并且可以扩展或重写父类的功能。

用途

  1. 代码重用:通过继承,子类可以复用父类的代码,减少代码重复。

  2. 代码扩展:子类可以扩展父类的功能,添加新的属性和方法。

  3. 代码维护:通过继承,可以创建层次化的类结构,使代码更易于维护和扩展。

在游戏开发中,继承广泛用于创建不同类型的游戏对象。例如,可以创建一个 Character 基类,然后创建 PlayerEnemy 子类,从而复用和扩展 Character 的功能。

语法规则

  1. 使用 : 符号表示继承关系。

  2. 子类可以覆盖父类的方法,使用 override 关键字。

public class ParentClass
{
    public void ParentMethod()
    {
        Console.WriteLine("This is a parent method.");
    }
}

public class ChildClass : ParentClass
{
    public void ChildMethod()
    {
        Console.WriteLine("This is a child method.");
    }
}

示例代码

  1. 简单继承

public class Animal
{
    public string Name { get; set; }

    public void MakeSound()
    {
        Console.WriteLine("Animal sound");
    }
}

public class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("Woof!");
    }
}

public class Program
{
    public static void Main()
    {
        Dog myDog = new Dog();
        myDog.Name = "Buddy";
        myDog.MakeSound(); // 继承自 Animal 类
        myDog.Bark(); // Dog 类的方法
        Console.WriteLine($"Dog's name: {myDog.Name}");
    }
}

  1. 重写方法

public class Animal
{
    public string Name { get; set; }

    public virtual void MakeSound()
    {
        Console.WriteLine("Animal sound");
    }
}

public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

public class Program
{
    public static void Main()
    {
        Animal myAnimal = new Animal();
        myAnimal.MakeSound(); // 输出 "Animal sound"

        Dog myDog = new Dog();
        myDog.MakeSound(); // 输出 "Woof!"
    }
}

优点和缺点

优点

  1. 代码重用:通过继承,子类可以复用父类的代码,减少代码重复。

  2. 代码扩展:子类可以扩展父类的功能,添加新的属性和方法。

  3. 层次结构:通过继承,可以创建层次化的类结构,使代码更易于理解和维护。

缺点

  1. 耦合度高:子类依赖于父类,修改父类可能会影响子类的行为。

  2. 灵活性差:继承是静态的,子类与父类的关系在编译时确定,灵活性不如组合。

  3. 多重继承问题:C# 不支持多重继承(一个类只能有一个直接父类),这可能会限制某些设计。

基础练习题

  1. 创建一个 Vehicle 类,包含 Speed 属性和 Drive 方法。然后创建 CarBike 子类,从 Vehicle 类继承,并添加各自的属性和方法。创建 Program 类,在 Main 方法中实例化 CarBike 对象,并调用它们的方法。

  2. 创建一个 Person 类,包含 FirstNameLastName 属性,以及 GetFullName 方法。然后创建 Student 子类,从 Person 类继承,并添加 Grade 属性。创建 Program 类,在 Main 方法中实例化 Student 对象,并调用它的方法。

进阶练习题

  1. 创建一个 Shape 抽象类,包含 AreaPerimeter 抽象方法。然后创建 CircleRectangle 子类,分别实现 AreaPerimeter 方法。创建 Program 类,在 Main 方法中实例化 CircleRectangle 对象,并计算它们的面积和周长。

  2. 创建一个 Employee 类,包含 NameSalary 属性,以及 GetDetails 方法。然后创建 ManagerDeveloper 子类,从 Employee 类继承,并分别添加 DepartmentProgrammingLanguage 属性。创建 Program 类,在 Main 方法中实例化 ManagerDeveloper 对象,并调用它们的方法。


评论