继承是把基类的属性和方法延续到子类的过程, 继承除了把父类的方法带到子类,还允许子类对父类的方法进行派生。

如一个基类Animal, 则可有一个名为Fish的派生类和一个名为Bird的派生类,Fish是一个Animal, Bird也是,

每个派生类均表示基类Animal的不同专业化。

除了构造函数和析构函数以外,派生类隐式获得基类其余的所有成员, 实现代码重用, 同时派生类可增加更多的成员, 看代码:

public class WorkItem{private static int nextID;protected int ID { get; set; }protected TimeSpan jobLength { get; set; }protected string Title { get; set; }protected string Description { get; set; }public WorkItem(){ID = 0;Title = "Default title";Description = "Default description";jobLength = new TimeSpan();}static WorkItem(){nextID = 0;}public WorkItem(string title, string desc, TimeSpan joblen){this.ID = GetNextID();this.Title = title;this.Description = desc;this.jobLength = joblen;}protected int GetNextID(){return ++nextID;}public void Update(string title, TimeSpan joblen){this.Title = title;this.jobLength = joblen;}public override string ToString(){return string.Format("{0} - {1}", this.ID, this.Title);}}public class ChangeRequest : WorkItem{protected int originalItemID { get; set; }public ChangeRequest() { }public ChangeRequest(string title, string desc, TimeSpan jobLen, int originalID){this.ID = GetNextID();this.Title = title;this.Description = desc;this.jobLength = jobLen;this.originalItemID = originalID;}}class Program{static void Main(string[] args){WorkItem item = new WorkItem("Fix Bugs","Fix all bugs in my source code branch",new TimeSpan(3, 4, 0, 0));ChangeRequest change = new ChangeRequest("Change design of base class","Add members to base class",new TimeSpan(4,0,0),1);Console.WriteLine(item.ToString());Console.WriteLine(change.ToString());Console.WriteLine("Press any key to exit");Console.ReadKey();}}

当基类将方法声明为Virtual时,派生类可以用自己的实现重写方法, 如果为基类的成员声明为abstract, 则在直接继承自该类的任何非抽象类中都要重写此方法。 对于抽象类,它继承抽象成员而不实现他们。 抽象成员和徐程远是多态性的基础,多态性是面向对象的变成的第二个主要特性。

如果希望禁止通过new关键字直接进行实例化,可以将类声明为abstract. 这样仅当从该类派生新类时才会使用这个类。  签名指定参数和返回值,但没有实现(方法体)。 抽象类不必包含抽象成员, 但如果某个类确实包含抽象成员,则该类自身必须声明为抽象类。

派生类可以访问基类的公共成员,受保护成员,内部成员和受保护内部成员, 即使派生类继承基类的私有成员, 仍不能访问这些成员, 但是, 所有私有成员在派生类中仍然存在,且执行与基类自身相同的工作,例如,假定一个受保护基类方法访问私有字段。要是集成的基类方法正常工作,派生类必须要有该字段。

派生类可以通过以相同名称和签名声明基类成员来隐藏这些成员.

转载于:https://blog.51cto.com/mengya520/1424847

[C# Fundamantal] 类继承简析相关推荐

  1. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  2. OpenCV中基本数据类型Mat类使用简析

    Mat 类是OpenCV中的一个基本数据类型,它是一个n维密集数组类 Mat 类表示一个 n 维密集数值单通道或多通道数组.它可用于存储实数或复值向量和矩阵.灰度或彩色图像.体素体积.向量场.点云.张 ...

  3. 网路游侠:网络协议分析类产品简析

    目前网络协议分析类产品火爆的很,游侠(www.youxia.org)其实在几年前就在关注这个市场,目前应该说已经做的如火如荼,但是貌似依然有很多人对这类产品认识有偏差,简单说几句: 网络协议分析类产品 ...

  4. 24考研——专业院校选报指南(3步决定专业选择、11大类本科对应考研专业简析、6步决定目标院校)

    文章目录 一.专业选择指导 1.1 考研整体形势 1.2 考研专业选报 1.2.1 专业设置 1.2.2 专硕专业设置 1.2.3 专业代码含义 1.2.4 区分"学硕和专硕" 1 ...

  5. Python源码学习:内建类型简析并简析int对象

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 上一篇文章中已经大致分析了下,Python的启动执行流程,现在我们分析一下Pytho ...

  6. ceph存储原理_Ceph存储引擎BlueStore简析

    前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD.同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真 ...

  7. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  8. django源码简析——后台程序入口

    django源码简析--后台程序入口 这一年一直在用云笔记,平时记录一些tips或者问题很方便,所以也就不再用博客进行记录,还是想把最近学习到的一些东西和大家作以分享,也能够对自己做一个总结.工作中主 ...

  9. python代码设计测试用例_Python单元测试与测试用例简析

    Python单元测试与测试用例简析 发布时间:2019-11-20 22:03 来源:互联网 当前栏目:web技术类 本文实例讲述了Python单元测试与测试用例.分享给大家供大家参考,具体如下: 单 ...

  10. Spring Boot源码简析 @EnableTransactionManagement

    相关阅读 Spring Boot源码简析 事务管理 Spring Boot源码简析 @EnableAspectJAutoProxy Spring Boot源码简析 @EnableAsync Sprin ...

最新文章

  1. YSLOW法则中,为什么yahoo推荐用GET代替POST?
  2. nanomsg:ZeroMQ作者用C语言新写的消息队列库
  3. CISCO CME:配置基于硬件的电话会议
  4. php 变量写入数据库,PHP基础/JS变量存入数据库 | 学步园
  5. 连接oracle10g数据库免安装oracle客户端解决办法 (转载)
  6. uva 10594(最小费用最大流)
  7. 尝试使用Bouml创建用例图
  8. graph slam tutorial :从推导到应用3
  9. PHP高级教程-高级过滤器
  10. (三)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训
  11. 精通开关电源设计第三版pdf_看漫画,学电源(一)丨线性电源与开关电源的构造...
  12. 1.3 收敛数列的性质
  13. lda 协方差矩阵_LDA算法详解
  14. 常见电脑故障之网络不通
  15. html旋转360度特效,CSS3图片旋转特效(360/60/-360度)
  16. stc12c5a60s AD转换获取土壤的湿度
  17. ZCANPRO的.can文件解析
  18. MySQL函数关键字(五)子查询 ANY/SOME/ALL/IN/EXISTS/USING
  19. 应对羊毛党的老手段不管用了,但有些公司依然有办法,他们是怎么做的?
  20. OEM的意思是什么?(收藏)

热门文章

  1. fst 共享后缀_trie、FSA、FST(转)
  2. TestCenter测试管理工具环境配置(C)
  3. 什么是带宽,举个例子说一下,整天说的服务器带宽有限,是什么意思?
  4. ufs 固态硬盘_单芯片SSDs / eMMC / UFS
  5. [渝粤教育] 西南科技大学 计算机文化基础复习资料
  6. EverEdit: Windows上国人开发的比Notepad++更优秀的高级文本编辑器
  7. 【Python算法】:n个点m条边有权无向图
  8. 计算机如何理解图像?
  9. 第2章 构建自定义语料库
  10. windows安装OpenSSL