C#子类对基类方法的继承、重写与隐藏详解子类对基类方法的继承、重写与隐藏详解
前言前言
提起子类、基类和方法继承这些概念,肯定大家都非常熟悉。毕竟,作为一门支持OOP的语言,掌握子类、基类是学习C#的
基础。不过,这些概念虽然简单,但是也有一些初学者可能会遇到的坑,我们一起看看吧。
子类继承基类非私有方法子类继承基类非私有方法
首先我们看最简单的一种,子类继承自基类,但子类对继承的方法没有任何改动
class Person
{
public void Greeting()
{
Console.WriteLine("Hello, I am Person");
}
}
class Employee : Person
{
}
class Program
{
static void Main(string[] args)
{
Person p = new Employee();
p.Greeting();
}
}
在这个例子中,作为子类的Employee自动继承了基类的Greeting方法,当在子类实例调用这个方法的时候,实际上调用的是
基类的方法。这个例子非常简单,毋庸多言。
子类覆盖基类方法子类覆盖基类方法
接着是最常见的情况,子类覆盖基类的方法,典型的例子如下
class Person
{
public virtual void Greeting()
{
Console.WriteLine("Hello, I am Person");
}
}
class Employee : Person
{
public override void Greeting()
{
Console.WriteLine("Hello, I am Employee");
}
}
class Program
{
static void Main(string[] args)
{
Employee e = new Employee();
Person p = e;
p.Greeting();
e.Greeting();
}
}
同样,这段代码也很简单,基类方法通过关键字virtual表明方法可以被覆盖,子类通过关键字override实现对基类方法的覆
盖,最后看调用部分,无论变量类型是子类还是基类,只要对象实际类型是子类,调用的方法都是子类覆盖的方法,这也是多
态的实现基础。