📜  C#继承(1)

📅  最后修改于: 2023-12-03 15:30:19.515000             🧑  作者: Mango

C#继承

在C#中,继承是一种面向对象的编程概念,它允许程序员创建一个新的类,该类具有原始类的属性和方法。这个新的类被称为子类,而原始类被称为父类。下面是一个示例:

public class Animal
{
    public void Eat()
    {
        Console.WriteLine("Animal is Eating!");
    }

    public void Sleep()
    {
        Console.WriteLine("Animal is Sleeping!");
    }
}

public class Wolf : Animal
{
    public void Howl()
    {
        Console.WriteLine("Wolf is Howling!");
    }
}

在上面的代码中,我们定义了一个名为Animal的类,并在该类中定义了两个方法:Eat和Sleep。接下来,我们定义了一个名为Wolf的类,并使用关键字“:”继承Animal类。Wolf类中还有一个名为Howl的方法。

现在,我们可以使用Wolf类来创建一个新对象,并调用从Animal类继承的方法,如下所示:

Wolf wolf = new Wolf();
wolf.Eat(); // 输出 "Animal is Eating!"
wolf.Sleep(); // 输出 "Animal is Sleeping!"
wolf.Howl(); // 输出 "Wolf is Howling!"
C#中的多重继承

C#不支持多重继承,这意味着一个类只能从一个类继承。但是,可以通过实现接口来实现类似于多重继承的功能。例如:

public interface ICanFly
{
    void Fly();
}

public interface ICanSwim
{
    void Swim();
}

public class Bird : ICanFly
{
    public void Fly()
    {
        Console.WriteLine("Bird is Flying!");
    }
}

public class Duck : ICanFly, ICanSwim
{
    public void Fly()
    {
        Console.WriteLine("Duck is Flying!");
    }

    public void Swim()
    {
        Console.WriteLine("Duck is Swimming!");
    }
}

在上面的代码中,我们定义了两个接口:ICanFly和ICanSwim。然后,我们定义了一个名为Bird的类,并实现了ICanFly接口。接下来,我们定义了一个名为Duck的类,并实现了ICanFly和ICanSwim接口。

现在,我们可以使用Bird类和Duck类来创建新的对象,并调用所实现接口的方法,如下所示:

Bird bird = new Bird();
bird.Fly(); // 输出 "Bird is Flying!"

Duck duck = new Duck();
duck.Fly(); // 输出 "Duck is Flying!"
duck.Swim(); // 输出 "Duck is Swimming!"
C#中的继承层次结构

在C#中,每个类都有一个继承层次结构,即该类的直接或间接父类以及父类的父类等。例如:

public class Animal
{
    public void Eat()
    {
        Console.WriteLine("Animal is Eating!");
    }

    public void Sleep()
    {
        Console.WriteLine("Animal is Sleeping!");
    }
}

public class Wolf : Animal
{
    public void Howl()
    {
        Console.WriteLine("Wolf is Howling!");
    }
}

public class ArcticWolf : Wolf
{
    public void Hunt()
    {
        Console.WriteLine("Arctic Wolf is Hunting!");
    }
}

在上面的代码中,我们定义了三个类:Animal、Wolf和ArcticWolf。Animal类是最基本的类,Wolf类继承了Animal类,并添加了一个名为Howl的方法。最后,ArcticWolf类继承了Wolf类,并添加了一个名为Hunt的方法。

现在,我们可以使用ArcticWolf类来创建一个新的对象,并调用从父类继承的方法,如下所示:

ArcticWolf arcticWolf = new ArcticWolf();
arcticWolf.Eat(); // 输出 "Animal is Eating!"
arcticWolf.Sleep(); // 输出 "Animal is Sleeping!"
arcticWolf.Howl(); // 输出 "Wolf is Howling!"
arcticWolf.Hunt(); // 输出 "Arctic Wolf is Hunting!"
总结

继承是C#面向对象编程中的一个重要概念。它允许我们创建一个新的类,该类继承了原始类的属性和方法。使用继承,我们可以构建复杂的继承层次结构,使代码更具可读性和可维护性。