首页 > 代码库 > C# 继承的说明

C# 继承的说明

继承、封装和多态是面向对象编程的重要特性。

其成员被继承的类叫基类也称父类继承其成员的类叫派生类也称子类

派生类隐式获得基类的,除 构造函数析构函数 以外的所有成员

派生类只能有一个直接基类,所以C#并不支持多重继承,但一个基类可以有多个直接派生类。
继承是可以传递的

即:

如果 ClassB 派生出 ClassC,
        ClassA 派生出 ClassB,
   则 ClassC (孙)会继承  ClassB(子) 和 ClassA(父) 中声明的成员。
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



namespace TestClass
{
    class Program
    {
        static void Main(string[] args)
        {
            son Son1 = new son();
            Son1.Minus(9, 6);
            Console.Read();
        }
        //父类
        public class father
        {
            public void Sum(int _a, int _b,String _identity)
            {
                int sum = _a + _b;
                System.Console.WriteLine("我是{3}类,我计算的结果是:{0},我计算的是{1}+{2}", sum, _a, _b, _identity);
            }
        }
        //子类   子类继承父类的元素
        public class son:father
        {
            public void Minus(int _i, int _j)
            {
                this.Sum(10, 10, "");
                this.Sum(_i,_j,"");                 
            }
        }
    }
}

//我是父类,我计算的结果是:20,我计算的是10+10
//我是子类,我计算的结果是:15,我计算的是9+6

 

当基类Sum()方法是私有时,派生类还会继承该方法吗?

没有在B类找到该方法,那么是不是它就没有被继承呢?其实不是的,私有成员其实已经被继承了,
但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。

如果我们想降低访问基本,我们可以把基类Sum()方法定义为protected。
能够阻止某个类被其他类继承吗?
答案是可以的,C#提供了一个sealed 修饰符,此修饰符会阻止其他类从该类继承。

 

 class Program
    {
        static void Main(string[] args)
        {
            son Son1 = new son();
            Son1.Minus(9, 6);
            Console.Read();
        }
        //父类
       sealed class father
        {
            public void Sum(int _a, int _b,String _identity)
            {
                int sum = _a + _b;
                System.Console.WriteLine("我是{3}类,我计算的结果是:{0},我计算的是{1}+{2}", sum, _a, _b, _identity);
            }
        }
        //子类   子类继承父类的元素
        public class son:father 
        {
            public void Minus(int _i, int _j)
            {
                this.Sum(10, 10, "");//这三条会报错
                this.Sum(_i,_j,"");                 
            }
        }
    }

 

C# 继承的说明