catlon

C#基础学习------多态

虚方法

​ 在父类中,使用virtual关键字声明一个虚方法。虚方法可以有默认的实现。

子类中的重写方法

​ 在子类中,使用override关键字重写父类的虚方法。重写的方法可以有不同的实现。

using System;

class BaseClass
{
    // 基类中的虚方法
    public virtual void Display()
    {
        Console.WriteLine("BaseClass Display method");
    }
}

class DerivedClass : BaseClass
{
    // 派生类中重写虚方法
    public override void Display()
    {
        Console.WriteLine("DerivedClass Display method");
    }
}

class Program
{
    static void Main()
    {
        BaseClass baseObj = new BaseClass();
        baseObj.Display(); // 调用基类的方法

        DerivedClass derivedObj = new DerivedClass();
        derivedObj.Display(); // 调用派生类的方法

        // 多态性
        BaseClass polyObj = new DerivedClass();
        polyObj.Display(); // 调用派生类的方法
    }
}

输出:

BaseClass Display method
DerivedClass Display method
DerivedClass Display methoda

注意:

​ 虚方法的重写必须使用override关键字。

​ 如果父类在内存中指向的子类对象的方法,有override关键字。程序会跳过父类的方法,执行被override修饰的方法,如果指向的子类没有,则执行父类的方法

抽象

抽象类和抽象方法

抽象类

​ 抽象类是使用abstract关键字修饰的类,不能实例化,只能被继承。抽象类通常用于定义一组方法和属性,强制子类实现这些方法和属性。

抽象方法

​ 抽象方法是使用abstract关键字修饰的方法,没有方法体,只能在抽象类中声明,必须在非抽象派生类中实现。这些方法定义了子类必须实现的行为。

using System;

abstract class Animal
{
    // 抽象方法,子类必须实现
    public abstract void MakeSound();

// 普通方法
public void Sleep()
{
    Console.WriteLine("Sleeping...");
}

}

class Dog : Animal
{
    // 实现抽象方法
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }
}

class Cat : Animal
{
    // 实现抽象方法
    public override void MakeSound()
    {
        Console.WriteLine("Meow");
    }
}

class Program
{
    static void Main()
    {
        Animal myDog = new Dog();
        myDog.MakeSound(); // 输出:Bark
        myDog.Sleep(); // 输出:Sleeping...

​    Animal myCat = new Cat();
​    myCat.MakeSound(); // 输出:Meow
​    myCat.Sleep(); // 输出:Sleeping...
}

}

posted on 2024-07-28 10:58  Cat-Lon  阅读(4)  评论(0编辑  收藏  举报

导航