2019-07-30 C#基础知识学习
继承和多态
接口与抽象类的区别:1、在接口中仅能定义成员,但是不能有具体的实现;抽象类除了抽象成员以外,其他成员有具体的实现。2、在接口中不能声明字段,并且不能声明任何私有成员,成员不能包含任何修饰符;在抽象中能声明任何成员,并能使用任何修饰符来修饰。3、接口中能实用类或者结构体来继承,但抽象类仅能使用类继承。4、在使用类来实现借口时,必须隐式或者显式地实现接口中的所有成员,否则需要将实现类定义为抽象类,并将接口中未实现的成员以抽象的方式实现;在使用类来继承抽象类时允许实现全部或部分成员,但仅实现其中的部分成员,其实现类必须也定义为抽象类。5、一个接口允许继承多个接口,一个类只能有一个父类。
实现多态的两种方式: a.使用父类作为方法形参实现多态 b.使用父类作为方法返回值实现多态
sealed关键词的用法:
当一个类的方法被标识为virtual,则表示该方法为虚方法,虚方法可以后代所重写(后代包括子类、以及子类的子类)
sealed关键字可以有两种用途:
1、可以修饰在带有override的方法上,用来阻止其子类进一步重写该方法。
2、可以修饰到类上,用来阻止类被继承
class Test11_0
{
public virtual string Fun()
{
return "这是类Test11_0";
} } class Test11_1 : Test11_0
{
public override string Fun()
{
return "这是类Test11_1";
}
}
class Test11_2 : Test11_1
{
public override string Fun()
{
return "这是类Test11_2";
}
} class Test11_3 : Test11_2
{
public override string Fun()
{
return "这是类Test11_3";
}
}
class Test12_0
{
public virtual string Fun()
{
return "这是类Test12_0";
}
}
class Test12_1:Test12_0
{
public sealed override string Fun()
{
return "这是类Test12_1";
} } class Test12_2 : Test12_1
{
//这个类就不能再重写fun方法了
} sealed class Test13//该类不能被继承
{ }
虚方法跟抽象方法的区别:总结:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法;虚函数是该方法有方法体,但是子类可以覆盖,也可不覆盖。(1)虚方法有方法体,抽象方法没有方法体。抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化;(2)抽象方法只能在抽象类中声明,虚方法不是;(3)派生类必须重写抽象类中的抽象方法,虚方法则不必要。
集合和泛类
集合与数组的区别:1、数组声明了元素的类型,集合不声明;2、数组是静态的,有固定大小,创建了就无法改变容量,而集合是动态扩展容量,可以根据需要改变大小;3、数组存放类型只能是一种,集合可以不是一种;4、数组易于存放与查找。
HashTable跟SortedList的区别:2者都是表示键/值对的集合,hashtable是没有排序的,所以新增元素会比较快,而SortedList 存储的键值对,是按key进行排序了的,因为要排序,所以新增元素时,要先查找元素的位置再插入,相对慢些,但是在查找时比较快
2019-07-30 C#基础知识学习的更多相关文章
- Vue2基础知识学习
Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...
- (转)Linux基础知识学习
Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...
- GCC基础知识学习
GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...
- Objective-c基础知识学习笔记
Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...
- AXAJ基础知识学习
AXAJ基础知识学习 博客首页 Ajax简介 ajxa全称是Asynchronous Javascript And XML ,就是异步的JS 和XML 通过Ajax可以再浏览器中向服务器发送异步请求, ...
- PHP基础知识学习总结
从今天开始过一遍PHP的基础知识 加油 地址:http://www.runoob.com/php/php-mail.html 该看:PHP发送电子邮件 2017年5月23日23:38:30 ...
- Elasticsearch基础知识学习
概要 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Ap ...
- C#基础知识学习
C#基础知识整理 学习地址:http://blog.csdn.net/column/details/csarp.html
- 韩天峰博客 php基础知识学习记录
http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...
- 〖前端开发〗HTML/CSS基础知识学习笔记
经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...
随机推荐
- Web上传大文件的解决方案
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- 小米oj 找小"3"(数位dp)
找小"3" 序号:#40难度:困难时间限制:1000ms内存限制:10M 描述 给定一个奇数n,可得到一个由从1到n的所有奇数所组成的数列,求这一数列中数字3所出现的总次数.例如 ...
- [Luogu] 魔法树
https://www.luogu.org/problemnew/show/P3833 树链剖分 + 线段树 为啥会RE?? 不解 #include <iostream> #include ...
- UVA 796 Critical Links —— (求割边(桥))
和求割点类似,只要把>=改成>即可.这里想解释一下的是,无向图没有重边,怎么可以使得low[v]=dfn[u]呢?只要它们之间再来一个点即可. 总感觉图论要很仔细地想啊- -一不小心就弄混 ...
- Innodb内存结构
聚集索引与非聚集索引: 聚集索引:主键,有序,存储顺序与内存一致 非聚集索引:非主键,无序 聚集索引在叶子节点存储的是表中的数据 非聚集索引在叶子节点存储的是主键和索引列 使用非聚集索引查询出数据 ...
- div设置百分比高度 宽度
给div按百分比设置高度 宽度两种方法: 第一种是给body标签设置他的高度值,xxxpx,div就会根据body的像素值取百分比: 第二种方法就是在div属性中加入 position:absolut ...
- Phos 技术服务支持
Phos Mail: tencenter@163.com
- Linux系统是否被植入木马的排查流程梳理
在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节.今天,分享一下如何检查linux系统是否遭受了入侵? 一.是否入侵检查 1)检查系统日志 1 2 检查系统错误登陆日志,统计 ...
- 只要你用atom修改后保存代码文件的时候,你在chrome上的页面就会自动刷新。
学习html和css的时候Ctrl+s 以后预览网页需要手动刷新 现在不用了 给chrome安装安装LivePage这个插件. 只要你用atom修改后保存代码文件的时候,你在chrome上的页面就会自 ...
- 在React中修改antd的样式
1.在Component的Radio中加个style={radioStyle}. <RadioGroup> <Radio style={radioStyle} value={}> ...