继承、多态,学习目标:

1、能够熟记定义和概念

2、能够理解其内部意义

3、能够运用到自己的编码实现中

如何进行代码的复用:

----- 自己写好了一段代码,理想状态(永远都不要再写了,直接用)

----- 当编写好一个类后,再编写其他类时,如果他们有“共同的属性”和“共同的方法”时,我们就可以考虑将其共有的部分,提取出来,便于后续的复用!

步骤:

1、创建一个新的数据容器(类)

2、将需要“复用”的属性和方法,剪切到类中(父类)

3、在将新类,在其定义语法后,使用 : 父类 的方式建立两者的关联

---- 这就是我们所说的“继承”:

继承的目的:实现“代码的复用”,新类继承了“原来一个类”,即具有原来那个类所拥有的属性和方法。

“继承”的特点及特性:  ---- 被继承的类:父类、基类;继承对方的类:子类、派生类

1、子类继承父类后,具有父类所有对外公开的属性和方法

2、子类的方法中,如何使用父类资源:base.父类资源、this.父类资源(父亲的也是你)

3、但是父类无法获取“子类”自有的资源。(儿子的还是儿子的)

4、不是所有的“父类”资源都可以被子类使用:

private         --- 私有的资源,只能在本类中使用,子类也无法使用。

protected   --- 该类资源,只被“本家族”的对象所使用,外部无法访问。

5、“子类”继承“父类”满足: is  a 关系 【子类  is  a  父类】

---- 当我们的程序中,一个类,完全可以被另外一个类所代替的话!我们就说他们之间满足“里氏替换原则”【子类完全可以替代父类】

6、单根性 ---- 一个子类只能继承于一个父类

传递性 ---- 儿子可以继承父亲,孙子可以再继承儿子,且越后代的类获取的资源越多

5、子孙类在创建对象实例时,先创建其父类,再创建其后续子类。

6、 子类中bass的用法:

1、在子类的方法中,使用base调用父类的属性及方法

2、在子类的构造函数后,使用 :base()的方式,给父类传递构造参数

private

在类中,才能被访问

protected

在类中,及子孙类中,才能被访问

internal

在本项目中(程序集),才能被访问

public

所有人都可以访问

小贴士:

实现对现有“类”的复用:

方式一:继承 ---->  is  a 关系 ----->  张三  is   a  李四(张三就说李四,具有李四的功能)

方式二:雇佣 ----> has a 关系 -----> 张三 has  a   李四(张三中有一个李四,拥有了四的功能)

两种方法的对比:

继承,不仅可以用于其对外属性和方法,还可以使用其protected的方法,但是关系太紧密,不便于扩展和替换;

雇佣,灵活,便于扩展,更有利于对“多个资源”同时进行复用

深入.net(继承)的更多相关文章

  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. ECharts整合HT for Web的网络拓扑图应用

    ECharts图形组件在1.0发布的时候我就已经有所关注,今天在做项目的时候遇到了图标的需求,在HT for Web上也有图形组件的功能,但是在尝试了下具体实现后,发现HT for Web的图形组件是 ...

  2. DirectX.Capture Class Library

    DirectX.Capture Class Library Brian Low,              29 Mar 2008                                    ...

  3. winform简单打印

    首先新建一个winform 添加winform中自带的打印控件 winform中有默认的打印控件 1.按图片内容将控件拖拽到form中! 2.然后将pageSetupDialog1,printDial ...

  4. 【UWP】UI适配整理

    做UWP有几个月了,期间发布了几个应用,在这里整理一下适配相关的一些东西,UWP关于UI的适配主要有两种方式: 1.VisualState+Trigger:通过触发器出发界面更变,通常在Desktop ...

  5. C# 委托和事件(一):最简单的委托和事件

    C#的事件基于委托,所以先说委托. 一切脱离实际场景的抽象概念新手看上去就像是在扯犊子,不错,我就是个新手.所以我需要一个实际的场景. 明天刚好考试(商务英语),考试上有两个角色(class):老师( ...

  6. 【从API学英语】-DriverManager

    原文: The basic service for managing a set of JDBC drivers. NOTE: The DataSource interface, new in the ...

  7. .NET invoke NetSuite Restlet

    Please indicate the source if you need to repost. Restlet allows programmers to use the http request ...

  8. 什么是CGI

    什么是CGI 1. 定义: CGI(Common Gateway Interface)是HTTP服务器与你的或其它机器 上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. 2. 功能: 绝大 ...

  9. Scalaz(38)- Free :Coproduct-Monadic语句组合

    很多函数式编程爱好者都把FP称为Monadic Programming,意思是用Monad进行编程.我想FP作为一种比较成熟的编程模式,应该有一套比较规范的操作模式吧.因为Free能把任何F[A]升格 ...

  10. maven 检查依赖冲突和版本冲突

    maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package - ...