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. Android四大组件

    Activity 概念 活动是一种可以包含用户界面的组件,主要用于和用户交互.一个应用程序可以包含零个或多个活动. 基本用法 手动创建活动 1. 创建或加载布局 2. 在AndroidManifest ...

  2. PHP之:析构函数

    如何正确理解PHP析构函数 参考文献:http://developer.51cto.com/art/200912/167023.htm 初次学习PHP语言的朋友们可能对PHP析构函数有些不太了解.我们 ...

  3. centos6.5下安装mysql

    http://www.centoscn.com/mysql/2014/0812/3481.html 1.使用yum命令安装mysql [root@bogon ~]#  yum -y install m ...

  4. JavaWeb---总结(十一)使用Cookie进行会话管理

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  5. D/A转换器实验

    1.代码: #include<reg52.h>typedef unsigned char u8;typedef unsigned int u16;void delay (u16 num){ ...

  6. css007 margin padding border

    css007 margin padding border 1.理解盒模型(盒模型:就是把一些东西,包括html各种标签都包含在一个 看不见的盒子里) 1/在web浏览器中任何标签都是一个盒子,内容的周 ...

  7. 在不同的pyhon版本中切换

    issue discription 在一台电脑上同时安装了python2.7和python3.5,怎样在这两个版本中切换调用? solution to the issue 进入python安装文件夹, ...

  8. phpcms从表v9_news_data中字段content中用正则取出图片的地址输出

    preg_match ("<img.*src=[\"](.*?)[\"].*?>",$test,$match); echo "$match ...

  9. JavaWeb学习笔记——javabean

  10. css隔行换色

    .tab1 tr:nth-of-type(odd){ background:#eeeeee;} .tab1 tr:nth-of-type(even){ background:#f8f8f8;} .ta ...