深入.net(继承)
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(继承)的更多相关文章
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- JavaScript的继承实现方式
1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...
- javascript中的继承与深度拷贝
前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...
- 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- JS继承类相关试题
题目一: //有关于原型继承的代码如下:function Person(name) { this.name = name;}Person.prototype = { getName : f ...
- JS继承之寄生类继承
原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...
- JS继承之借用构造函数继承和组合继承
根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...
- 深入浅出JavaScript之原型链&继承
Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...
- 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型
前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.
随机推荐
- fastcgi安装
fastcgi安装 这里及以下的web服务器都是以nginx为例子和说明,php以5.3为例子. php-fpm fastcgi在服务器上会启动多个进程进行解析,这个时候就需要一个fastcgi的管理 ...
- 大话胖model和瘦model
今天业务完成到一定程度,查看下代码,猛然发现目前的这个代码有点奇怪.奇怪就奇怪在我的model中有很多文件,每个文件都对应数据库中的一张表,然后每个model中有很多是几乎没有什么逻辑代码的.比如: ...
- 矢量化的HTML5拓扑图形组件设计
HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: www.hightopo.com/guide/guide/core/vector/ht-vector-guide.html ...
- 【FTP】C# System.Net.FtpClient库连接ftp服务器(上传文件)
如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...
- 【阿炬Android笔记】01、调用VitamioBundle播放窗口
1.调用VitamioBundle播放窗口 Intent intent = new Intent(getApplicationContext(), VideoActivity.class); inte ...
- Abot 爬虫分析-整体结构
1. 引言 在Github 上搜索下Web Crawler 有上千个开源的项目,但是C#的仅仅只有168 个,相比于Java 或者Python 确实少的可怜.如果按照Stars 排名.可以看到 排在第 ...
- 最小生成二叉树-prim算法
1.prim算法:一种计算生成最小生成树的方法,它的每一步都会为一棵生长中的树添加一条边. 2.时间复杂度:
- Python 第二模块学习总结
学习总结: 1.掌握对装饰器的用法 2.掌握生成器的用法 3.掌握迭代器的用法 4.熟悉Python内置函数 5.熟悉Python shutil/shelve/configparse/hashlib/ ...
- Scalaz(30)- Free :Natural Tranformation ~> - map higher kinded types for free
当我们需要定义一些对应高阶类型进行相互类型转换的操作函数时,我们发现scala语言并不提供能定义这种函数的支持.举例来说:如果我们希望定义一个函数把对于任何T值的Option[T]转换成List[T] ...
- 使用QRCode简单生成二维码
// // ViewController.m // 二维码 // // Created by 123 on 16/9/4. // Copyright © 2016年 彭洪. All right ...