1.继承定义:就是面向对象中类与类之间的一种关系。通过继承,使得子类具有父类的属性和方法,同时子类也可以通过加入新的属性和方法或者修改父类的属性和方法建立新的类层次。

2.CLR支持实现单继承和接口多继承

3.继承特性

  • 继承是可以传递的,子类是对父类的扩展,必须继承父类方法,同时可以添加新方法。
  • 子类可以调用父类方法和字段,而父类不能调用子类方法和字段。
  • 虚方法如何实现覆写操作,使得父类指针可以指向子类对象成员。
  • 子类不光继承父类的公有成员,同时继承父类的私有成员,只是在子类中不被访问。
  • new关键字在虚方法继承中的阻断作用。

4.接口继承

  • 抽象类适合于有族层概念的类间关系,而接口最适合为不同的类提供通用功能
  • 接口注重于CAN-DO关系类型,抽象类偏重于IS-A式的关系
  • 接口多定义对象的行为,抽象类多定义对象的属性。
  • 如果预计会出项版本问题,可以创建“抽象类”
  • 因为值类型是密封的,所以只能实现接口,而不能继承类。

5.解决继承耦合度高的问题——Adapter模式

对象的Adapter模式,通过聚合而非继承的方式事项对原有系统的扩展,松散耦合,较少的新类型

实现细节:

interface ITweetable{void ToTweet();}

public class BirdAdapter:ITweetable

{

private Bird _bird;

public BirdAdapter(Bird bird){_bird=bird;}

public void ShowType(){_bird.showType();}

...部分省略...

public void ToTweet(){//为不同的子类实现不同的tweet行为}

}

客户端调用为:

public class Test

{

public static void Main()

{

BirdAdapter ba=new BirdAdapter(new Chicken);

ba.ShowType();

ba.ToTweet();

}

}

必须知道的.net(继承)的更多相关文章

  1. 解惑《你必须知道的.net》——C#继承关系中【方发表】的创建和调用

    前言: 现在正在读<你必须知道的.net>(第二版)一书,看到IL语言那一章,将call.callvirt和calli时候,书中举了一个例子,是一个三层继承的例子,我一开始看的时候就有点懵 ...

  2. [你必须知道的.NET]第二十七回:interface到底继承于object吗?

    发布日期:2009.03.05 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 在.NET世界里,我们常常听到的一句话莫过于“S ...

  3. 《你必须知道的.NET》读书笔记一:小OO有大智慧

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.对象  (1)出生:系统首先会在内存中分配一定的存储空间,然后初始化其附加成员,调用构造函数执行初 ...

  4. MVC中你必须知道的13个扩展点

    MVC中你必须知道的13个扩展点 pasting 转:http://www.cnblogs.com/kirinboy/archive/2009/06/01/13-asp-net-mvc-extensi ...

  5. 前端开发必须知道的JS(二) 闭包及应用

    http://www.cnblogs.com/ljchow/archive/2010/07/06/1768749.html 在前端开发必须知道的JS(一) 原型和继承一文中说过下面写篇闭包,加之最近越 ...

  6. [你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

    原文地址:http://kb.cnblogs.com/page/42318/ 系列文章导航: [你必须知道的.NET] 开篇有益 [你必须知道的.NET] 第一回:恩怨情仇:is和as [你必须知道的 ...

  7. [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望

    发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文开始,将以& ...

  8. [你必须知道的.NET]第三十回:.NET十年(下)

    发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  9. [你必须知道的.NET]第二十九回:.NET十年(上)

    发布日期:2009.05.08 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

随机推荐

  1. 缺陷管理系统mantisbt环境搭建

    mantisbt 搭载在lamp环境下 <VirtualHost *:8000> DocumentRoot "/data/mantisbt" </VirtualH ...

  2. java.io.IOException: No FileSystem for scheme: hdfs

    在这篇文章中,介绍了如何将Maven依赖的包一起打包进jar包.使用maven-assembly打成jar后,将这个jar提供给其他工程引用的时候,报出如下错误: log4j:WARN No appe ...

  3. [Android]Volley的使用

    Volley是Google I/O 2013上提出来的为Android提供简单快速网络访问的项目.Volley特别适合数据量不大但是通信频繁的场景. 优势 相比其他网络载入类库,Volley 的优势官 ...

  4. MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护

    回顾 文件或目录的额外属性(noower,noattracache和noentrycache),可以通过MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)检查 ...

  5. Form Submit表单提交

    <button type="button" ng-click="submit()"class="btn btn-block btn-danger ...

  6. JAVASE 面试总结(1)

    1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"?Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码 ...

  7. 功能完善的Java连接池调用实例

    /** * Title: ConnectPool.java * Description: 连接池管理器 * Copyright: Copyright © 2002/12/25 * Company: * ...

  8. photobooth.js jquery

    <div id="example" class="photobooth" style="width:758px;height:400px&quo ...

  9. angularjs笔记(一)

    简介 AngularJS API angularjs是javascript框架,通过指令(指令就是自定义的html标签属性)扩展了HTML,并且可以通过表达式(表达式使用)绑定数据到HTML. 1.a ...

  10. Numerical Optimization: Understanding L-BFGS

    http://aria42.com/blog/2014/12/understanding-lbfgs/ Numerical optimization is at the core of much of ...