虚方法
在父类中,使用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...
}
}
标签:C#,子类,void,多态,class,override,------,方法,Display
From: https://www.cnblogs.com/catlon/p/18327967