C#之继承

继承特性描述:
继承性是面向对象程序设计语言的另一基本特征,通过继承,可以实现代码的复用。运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。继承而得到的类为子类,被继承的类为基类或父类。继承是子类利用父类中定义的方法和变量,就像它们属于子类本身一样。

  C#中不支持类之间的多重继承(注:C#支持接口之间的多重继承),即不允许一个子类继承多个父类。

  不要混淆的是,C#支持多层继承,用一个子类作为另一个类的父类是完全可以接受的。也就是说,你可以如你所愿的建立包含任意多层继承的类层次。例如,给定三个类A、B和C。C是B的一个子类,而B又是A的一个子类。当这种类型的情形发生时,每个子类继承它的所有父类的属性,于是这种情况下,C就继承了B和A的所有方面。

  如果缺省:基类,则该类为Object的子类。Object类没有任何直接或间接基类,并且是所有其他类的最终基类。无论基类成员的可访问性如何,除构造函数和析构函数外,

所有其他基类的成员都能够被子类继承。然而,有些继承成员在派生类中是不可访问的,取决于基类成员的可访问性。

虚方法与重写方法
如果一个实例方法的声明中有virtual修饰符,那么这个方法为虚方法。如果一个实例方法的声明中有override修饰符,重写方法用相同的签名重写所继承的虚方法。在虚方法调用中,对象的运行时类型确定了要被调用的究竟是方法的哪一个实现。

  只有在包含了override修饰符时,一个方法才能重写另一个方法。否则,声明一个从基类继承而来的具有相同签名的方法只会隐藏被继承的基类方法。重写方法允许通用类指定方法,这些方法对该类的所有派生类都是公用的,同时该方法允许子类定义这些方法中的某些或全部的特殊实现。

using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
SuperClass superClass = new SubClass();
superClass.Method();
Console.ReadKey();
}
}

public class SuperClass
{
    public SuperClass()
    {
        Console.WriteLine("In SuperClass.Consturctor");
    }

    public virtual void Method()
    {
        Console.WriteLine("In SuperClass.Method()");
    }

}

public class SubClass:SuperClass
{
    public SubClass()
    {
        Console.WriteLine("In SubClass.ConsTructor");
    }

    public override void Method()
    {
        Console.WriteLine("调用成功");
    }

}

}

posted @ 2020-12-20 12:04  ErShiXiong  阅读(583)  评论(0编辑  收藏  举报