7.7.1 基类和派生类
在C#中,继承是一种面向对象编程的核心概念,它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和方法。
基类:
- 基类是提供基础结构和功能的类。
- 基类可以是抽象的,也可以是具体的。
派生类:
- 派生类是从基类继承属性和方法的类。
- 派生类可以添加新的属性和方法,或覆盖基类中的方法。
声明基类和派生类
public class BaseClass
{
public void Display()
{
Console.WriteLine("Display method of BaseClass.");
}
}
public class DerivedClass : BaseClass
{
public new void Display()
{
Console.WriteLine("Display method of DerivedClass.");
}
}
在这个例子中,DerivedClass
继承自 BaseClass
。DerivedClass
有一个 Display
方法,它覆盖了基类中的 Display
方法。
使用基类和派生类
BaseClass baseObj = new BaseClass();
DerivedClass derivedObj = new DerivedClass();
baseObj.Display(); // 输出: Display method of BaseClass.
derivedObj.Display(); // 输出: Display method of DerivedClass.
7.7.2 多态
多态是另一个面向对象编程的核心概念,它允许你以一种统一的方式对待不同类的对象。在C#中,多态通常是通过方法重写(Override)和方法隐藏(New)实现的。
方法重写:
- 在派生类中,方法重写允许改变从基类继承来的方法的行为。
方法隐藏:
- 使用
new
关键字,派生类可以隐藏继承的方法。
多态的示例
public class BaseClass
{
public virtual void Show()
{
Console.WriteLine("Show method of BaseClass.");
}
}
public class DerivedClass : BaseClass
{
public override void Show()
{
Console.WriteLine("Show method of DerivedClass.");
}
}
在这个例子中,DerivedClass
重写了 BaseClass
的 Show
方法。
使用多态
BaseClass baseObj = new BaseClass();
DerivedClass derivedObj = new DerivedClass();
BaseClass refObj = derivedObj; // 多态的使用
baseObj.Show(); // 输出: Show method of BaseClass.
derivedObj.Show(); // 输出: Show method of DerivedClass.
refObj.Show(); // 输出: Show method of DerivedClass.
在这个例子中,即使 refObj
是 BaseClass
类型的引用,但它实际上指向的是 DerivedClass
的对象,所以调用的是 DerivedClass
的 Show
方法。
注意事项
- 使用
virtual
关键字声明基类方法,允许在派生类中被重写。 - 使用
override
关键字在派生类中重写基类的方法。 - 使用
new
关键字在派生类中隐藏继承的方法。