背景..什么是继承?

「继承」是对象导向编程的其中一个基本属性。 它可让您定义子类,重复使用(继承)、扩充或修改父类别行为。 其成员可供继承的类别称为基底类别。 继承基底类别成员的类别则称为「衍生类别」。

C# 和 .NET 只支持「单一继承」。 也就是说,类别只能继承自单一类别。 不过,继承可以转移,这可让您定义一组型别的继承阶层。 换句话说,型别 可继承自型别,其继承自型别 ,而该类型的继承来源为基底类别类型 。 因为继承可以转移,所以型别可以使用型别的成员。DCBADA

基底类别的所有成员不一定都由衍生类别继承。 不会继承的成员如下..

  • 静态构建函数,其会初始化类的静态数据。

  • 构造函数,您调用它创建一个新的执行个体。 每个类别都必须定义自己的建构函数。

  • 析构函数,由执行阶段的内存回收行程呼叫以终结类别的执行个体。

由派生继承基类别的所有其他成员时,是否可以看见它们,取决于其存取范围。 成员存取范围会影响其在衍生类别的可见性,如下所示..

  • 私用成员只有以嵌套方式置于其基底类别时,才会显示在衍生类别中。 否则,不会显示在衍生类别中。 在下列示例中, 是衍生自 的嵌套类,而则衍生自 。 私用字段会显示在 A.B 中。 不过,如果您移除方法中的注解,并尝试编译这个示例,它会产生编译器错误 CS0122:「'A.value' 的保护层级导致无法对其进行访问」。A.BACAA.valueC.GetValue

     

继承使用范围

只适用于类别和接口。

隐式继承

型别分类    隐含继承自
Class      Object
struct    ValueType, Object
枚举    Enum, ValueType, Object
Delegate     MulticastDelegate, Delegate, Object

继承和"IS"关系

通常,继承用于表示基类与一个或多个派生类之间的"is a"关系。

【C# 】继承的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

  3. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  4. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  6. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. JS继承之原型继承

     许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  10. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

随机推荐

  1. window10教育版激活失败

    问题 输入完key之后显示无法连接服务器 再次输入密钥无效,而且家庭版密钥激活也没了 使用命令行消除过去的key,使用新的教育版key后,显示运行在运行microsoft windows 非核心版本的 ...

  2. gorm连接mysql的初始化配置

    包含mysql配置.gorm配置.连接池配置.log日志配置 init_db_log.go文件代码 package main import ( "fmt" "gorm.i ...

  3. java-异常-异常注意事项

    1 package p1.exception; 2 3 /* 4 * 异常的注意事项: 5 * 6 * 1,子类在覆盖父类方法时,父类的方法如果抛出了异常, 7 * 那么子类的方法只能抛出父类的异常或 ...

  4. hexo博客如何插入图片

    Hexo是一个静态的博客网站生成器,生成一个博客只需要分分钟的时间就能搞定. Hexo的博文是支持Markdown格式的,发表一篇文章只需要简简单单的几个命令. hexo new '文章'就会生成一个 ...

  5. python 元组tuple介绍,使用。

    原文 https://blog.csdn.net/ruanxingzi123/article/details/83184909 一  是什么? # python 元组tuple? ''' 元祖tupl ...

  6. java代码实现调用短信接口,发送短信验证。

    一.代码示例 package com.aaa.zxf.login; import org.apache.commons.httpclient.HttpClient; import org.apache ...

  7. 解决mybatis拦截器无法注入spring bean的问题

    公司要整合rabbitmq与mybatis拦截器做一个数据同步功能. 整合过程中大部分环节都没什么问题,就是遇到了mybatis拦截器 @Intercepts(@Signature(type = Ex ...

  8. react组件中的类调用construcor、super方法你知道多少?

    constructor:在类中作为一个钩子函数,有constructor钩子函数的时候,可以定义state,如果用户不定义state的话,有无constructor钩子函数没啥区别: super:

  9. 深入了解Element Form表单动态验证问题 转载

    随风丶逆风 2020-04-03 15:36:41  2208  收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...

  10. Visual Studio 下error C2471: 无法更新程序数据库

    转载请注明来源:https://www.cnblogs.com/hookjc/ 解决方案:修改项目属性 右击项目 --> "属性" 1. "C/C++" ...