提示:以下是本篇文章正文内容,下面案例可供参考
一、里式替换原则
通俗讲,子类可以替换掉它的父类类型,反之则不行。
二、代码实例
1.父类实例
代码如下(示例):
public abstract class Printer
{
public string Brand { get; set; }
public int Price { get; set; }
/// <summary>
/// 必须重写
/// </summary>
public abstract void Print();
/// <summary>
/// 可以直接使用
/// </summary>
public void Copy()
{
Console.WriteLine("调用父类的【复印】方法...");
}
/// <summary>
/// 可以重写
/// </summary>
public virtual void Scan()
{
Console.WriteLine("调用父类的【扫描】方法...");
}
}
2.子类实例
代码如下(示例):
public class HPPrinter : Printer
{
/// <summary>
/// 必须重写父类中的抽象方法
/// </summary>
public override void Print()
{
Console.WriteLine("子类打印机正在打印...");
}
/// <summary>
/// 可以重写的方法
/// </summary>
public override void Scan()
{
Console.WriteLine("子类打印机正在扫描...");
}
/// <summary>
/// 使用new覆盖方法
/// </summary>
public new void Copy()
{
Console.WriteLine("子类打印机正在复印...");
}
}
3.代码输出
class Program
{
static void Main(string[] args)
{
//父类类型 变量 = new 子类();
Printer myPrinter1 = new HPPrinter();
myPrinter1.Copy(); //覆盖的方法(普通的方法)
myPrinter1.Print(); //重写的抽象方法
myPrinter1.Scan(); //重写的虚方法
Console.Read();
}
}
总结
子类可以替换父类,不仅原有的父类功能不受影响,而且还能拓展自己新的行为。