继承和多态

接口与抽象类的区别: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进行排序了的,因为要排序,所以新增元素时,要先查找元素的位置再插入,相对慢些,但是在查找时比较快

      

最新文章

  1. iOS 利用JSPatch 添加热补丁功能
  2. LeetCode OJ-- Single Number II **@
  3. 【转载】让windows使用linux系统的命令
  4. A20板子上的触摸屏设备号变化后解决
  5. CodePage代码,MultiByteToWideChar
  6. java_method_MD5加密
  7. Unity EditorWindow 笔记
  8. mongodb 面试题总结
  9. ksar、sar及相关内核知识点解析
  10. .net使用Aspose.Words进行Word替换操作的实现代码
  11. 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)
  12. python3 解析 base64 数据
  13. git dev 分支merge到master
  14. Gradle 设置全局代理
  15. [Element-UI] 使用Element-UI的DateTimePicker组件报错:Cannot read property 'getHours' of undefined
  16. CentOS6.5 QT5.3 找不到GLIBCXX3.4.15解决方法
  17. Python3.5 学习八
  18. Json反序列化为动态类型(dynamic)
  19. Linux 获取网关地址
  20. 1.SpringMVC设计理念与DispatcherServlet

热门文章

  1. spring-boot web项目常用配置
  2. openSmile-2.3.0在Linux下安装
  3. codeforces723E
  4. JavaWeb_(Spring框架)Spring配置文件
  5. html,css,js实现的一个钟表
  6. Linux Redis的性能展示
  7. go面试
  8. Java学习回顾总结
  9. OpenCV中出现“Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000005C8ECFFA80 处。”的异常
  10. UM概述