什么是继承?

一,继承是C#中面向对象的特性之一。

继承,简单一句话就是建立类之间的关系,实现代码的重用性,方便系统扩展。继承的两大特性是单根性和传递性。

1》继承的单根性:是指子类只能继承一个父类,不能同时继承多个父类。就好比儿子只能有一个父亲(亲生),派生类只能从一个类中继承,继承不支持多重继承。避免代码结构的复杂性。

2》派生类(子类)继承的共同基类(父类)可以让代码更简洁明了,可扩展性和可维护性好

3》类Object是 .NET Framework 中所有类、结构、枚举和委托的最终基类,因为 .NET Framework 中的所有类均从 Object 派生,所以 Object 类中定义的每个方法可用于系统中的所有对象。 派生类也可以重写这些方法中的某些。

而接口是允许多继承。

如下:

由上图可看出继承的单根性,不允许多继承

而接口则编译通过的,允许多继承

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JiCheng
{
    interface A
    {
    }
    interface B
    {
    }
    interface C : A, B
    {
    }
}

2》继承的传递性:派生类是从基类那里继承特性,派生类也可以作为其他类的基类。从一个基类派生出多层类,这样就形成类层次结构。就是ClassA继承ClassB。ClassA可以调用ClassB的方法和属性,但是ClassB又继承了ClassC所有ClassA也可以调用ClassC的方法和属性。

如下继承的传递性:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JiCheng
{
    class ClassA
    {
    }
    class ClassB : ClassA
    {
    }
    class ClassC : ClassB
    {
    }
}

 3>继承子类被实例化的时候,父类也会被实例化(构造函数初始化),如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JiCheng
{
    class ClassA
    {
        public ClassA()
        {
            Console.WriteLine("ClassA");
        }
    }
    class ClassB : ClassA
    {
        public string B = "ClassB";
        public ClassB()
        {
            Console.WriteLine(B);
        }
    }
    class ClassC : ClassB
    {
        public ClassC()
        {
            Console.WriteLine("ClassC");
        }
    }
    class ClassD : ClassA {
        public ClassD() {
            Console.WriteLine("ClassD");
        }
    }
}

实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JiCheng
{
    class Program
    {
        static void Main(string[] args)
        {
            ClassC c = new ClassC();
            ClassD d = new ClassD();
            Console.ReadKey();
        }
    }
}

结果显示:

 综上:子类继承父类,父类会被实例化(初始化构造函数)

原文地址:https://www.cnblogs.com/May-day/p/6398770.html