C#学习笔记_10_设计模式&继承&多态
10_设计模式&继承&多态
- 设计模式
- 由前人总结的用来解决特定问题的解决方案
- 单例模式
- 在一个项目的不同模块中获取对象,获取到的是同一个对象
- 代码

- 继承
- 概念:如果多个类中具有相同的字段和方法,可以把相同的部分提取出来,做成一个新的类;这个新的类被称作是父类/基类/超类,而那些多个具有相同属性和方法的类被称作为子类/派生类;他们之间的关系是子类继承父类;
- 语法:子类类名 : 父类类型 { 子类类体 }

- 特点:
- 子类拥有父类中所有的字段、属性和方法
- 构造方法不可以被继承
- 一个类可以有多个子类,但是一个类只能由一个父类
- 一个类在继承另外一个类的同时还可以被其他类继承
- 在C#中左右的类都直接或者间接的继承自Object类
- 继承中的构造方法
- 注意事项
- 一个子类对象在实例化之前,需要先实例化从父类继承的部分
- 实例化父类部分,默认会使用父类中无参的构造方法

- 注意事项
- 访问权限修饰符
- 可以用来修饰类、字段、属性和方法,用来描述被修饰的内容可访问的范围
- public
- 可以用来修饰类、字段、属性和方法;
- 在整个解决方案生效;
- internal
- 可以用来修饰类、字段、属性和方法;
- 在整个项目中生效;
- 类的默认的访问权限是internal;
- protected
- 可以用来修饰字段、属性和方法;
- 可以在当前类中访问,可以在子类中,子类的子类…中访问;
- 甚至可以在跨项目的子类中访问;
- private
- 私有权限,可以用来修饰字段、属性和方法;
- 只能在按当前类中访问;
- 字段、属性和方法的默认访问权限就是private;
- protected internal
- 可以用来修饰字段、属性和方法;
- 在当前项目中生效,在跨项目的子类中生效;
- 注意事项
- 1、父类的访问权限要大于等于子类的访问权限;
- 2、在public权限的类中,如果某个字段或者方法使用到了非public权限的类型,那么程序会要求一定要将用到的这个类型改为public;
- 多态初步
- 向上转型:
- 由子类类型转为父类类型
- 是一个隐式转换,不需要额外的操作
- 向上转型肯定会成功
- 向上转型后的对象将不再能够使用子类中特有的字段属性和方法
- 向下转型:
- 由父类类型转为子类类型
- 是一个显示转换,需要强制类型转换,推荐使用as
- 向下转型不一定成功
- 如果向下转型失败,则得到null
- 在做向下转型前,一定要先用is判断下类型
- 向下转型后的对象就可以使用子类中特有的字段属性和方法
- 父类的引用可以指向子类的对象
- 案例代码

- 向上转型:
C#学习笔记_10_设计模式&继承&多态的更多相关文章
- 学习笔记——python(继承)
学习笔记(Python继承) 有几种叫法(父类-子类.基类-派生类)先拿代码演示一下: class father: def work(self): print("work>>&g ...
- HeadFirst学习笔记-1. 设计模式入门
1.概念 在开始学习前,我们先了解一些概念,方便我们接下来的学习. OO基础 抽象 继承 多态 封装 OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 设计模式 设计模式(Desi ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- 《java JDK7 学习笔记》之继承与多态
1.面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承.应该正确判断使用继承的时机及继承之后灵活的运用多态,才是学习继承时的重点. 2.程序代码重复在程序设计上,就是 ...
- Java学习笔记——封装、继承和多态
先说说封装: 用new 一条狗来举个例子: public class Dog { //私有化字段 private String name; private int age; //无参构造 Dog(){ ...
- (C/C++学习笔记) 十八. 继承和多态
十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...
- JavaSE 学习笔记03丨继承、接口、多态、内部类
Chapter. 5 继承 继承作为面向对象的三大特征之一,它是多态的前提.它主要解决的问题是共性抽取. Java中的继承,是单继承.多级继承的. 已存在的类,被称为超类.基类.父类(parent c ...
- Java 学习笔记(7)——接口与多态
上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是J ...
- .net学习笔记--使用抽象方法实现多态
在使用抽象方法实现多态之前,我们必须知道一些知识点: 1.抽象类不能被实例化: 2.抽象类可以包含非抽象成员,它们可以由其子类继承调用. 我们可以先创建一个Person的抽象类,代码如下: abstr ...
随机推荐
- U4687 不无聊的序列
U4687 不无聊的序列 0通过 85提交 题目提供者飞翔 标签 难度尚无评定 提交 最新讨论 暂时没有讨论 题目背景 如果一个序列的任意一个连续的子序列中没有只出现一次的元素,辣么kkk就认为这个序 ...
- 让mongodb执行js文件
环境: Linux js代码: 循环删除表中的数据: clear-mongodb-dialog.js print('=========BEGIN=========='); for(var i of [ ...
- protected (C# Reference)
https://msdn.microsoft.com/en-us/library/bcd5672a.aspx The protected keyword is a member access modi ...
- EasyUI 之 easyui-datagrid 字段格式化
后台返回的json格式: 列表字段要显示username 用户的真实姓名: formatter="formatterByUserName" <table id="d ...
- MAC地址 初识
MAC地址 即物理地址/硬件地址 地址长度为48位,6字节. 格式为:00-23-5A-15-99-42 一个网卡对应一个MAC地址(比如笔记本,有线网卡有一个MAC地址,无线网卡也有一个MAC地址) ...
- codevs1690 开关灯(线段树)
1690 开关灯 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description YYX家门前的街上有N(2< ...
- WCF 通讯标准绑定
WCF 通讯标准绑定 一.预定义标准绑定 标准绑定 说明 BasicHttpBinding BasicHttpBinding 绑定用于最广泛的互交操作,针对第一代Web服务,所使用的传输协议是HTTP ...
- Web开发必须知道的知识点
Web前端必须知道 一.常用那几种浏览器测试.有哪些内核(Layout Engine) 1.浏览器:IE,Chrome,FireFox,Safari,Opera. 2.内核:Trident,Gecko ...
- Jquery课堂上课了,第一节Jquery选择器$
Jquery是优秀的Javascrīpt框架,$是jquery库的申明,它很不稳定(我就常遇上),换一种稳定的写法jQuery.noConflict(); jQue ...
- linux对比两个文件的差异
在项目维护阶段,经常会对垃圾文件进行清理.比如没有在数据库中的文件进行删除,这个时候最好的选择就是使用shell命令了:废话不多说直接上代码: 1.首先准备好从数据表导出来的数据,方法随意 2.在服务 ...