19.什么是类型?

  用来定义某一种数据在内存里开辟空间的大小,还可以预置操作此种类型数据的相关方法

20.this关键字在方法中使用时所代表的含义

  this指的是当前类的对象,或者父类的类的对象(base只能指向父类的对象)

21.里氏替换原则

  子类替换父类所在的位置

22.C#中的数据类型

  • 值类型 

    • 简单类型(数字类型(int,short,long,float,double),字符(char),逻辑值(bool)),结构体(struct),枚举(enum)
  • 引用类型
    • 字符串(string),数组[ ],object(所有类的基类),类 class,委托 delegate

23. 值类型变量的初始化(内存分配)

  1.类的成员变量

   该变量是跟随类的对象存在于堆内存。当对象引用断开时,等着垃圾回收器进行清理时便被销毁 

  2.方法的局部变量

   该变量是在方法被调用时,存在于栈内存,方法执行完毕后被销毁

24. 继承

  1)、为什么要有继承?

    A、提高代码的重用性

    B、实现多态

  

  2)、继承的局限性

    A、一个类只能继承一个父类

    B、子类只能继承父类的非私有的成员

  

  3)、当存在继承关系时,子类如何访问父类的非私有成员

    A、base关键字:存在于子类对象里,用来指向父类对象的指针

    B、this关键字:获取父类的非私有的成员和本类的成员

25、子类可以强制转换为父类,但父类不能转换为子类

26、is和as的相同和区别?

  is是判断,返回类型为bool

  as是转换的意思。as只能对引用类型的做转换。as是先判断在转换,先测试转换是否合法,如果合法就转换,否则就返回NULL

  相同:都不会抛出异常

27、override与重载的区别

    A、重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要

    B、override是进行基类中函数的重写。为了适应需要

28、override重写的方法的“类型”

  虚方法(vritual):必须有方法体

  抽象方法(abstract):没有方法体

29、什么是多态?

  就是用子类来实例化父类,调用的是父类的抽象方法/虚方法,但实际执行的是子类实例重写的方法

30、抽象方法只能定义在抽象类中

31、当存在继承关系的时候,创建子类对象的时候不会创建父类对象,只会有一个对象。

  例如:Animal a = new Cat();

  当new一个子类的时候,有且只有一个子类对象

  ——————————————————————————————————————————————————————————————————————

  而我们经常看到这种说法:new子类时,先创建子类对象,调用子类的构造方法时,创建父类的对象,调用父类构造函数最后返回来执行子类构造方法。子类默认调用父类的无参构造方法,如果父类没有无参的构造方法,则必须显式的调用————》这是一个很大的误区!

  在内存中根本就无所谓对象的概念!new的时候是根据子类和父类所有静态成员的大小以及类型指针开辟一个总的空间(该空间不包含方法),子类和父类的类型指针指向两个类的方法表,所以,子类对象可以访问到父类和子类的方法。

32、如果子类和父类存在同名但没有重写关系的方法的时候,那么调用时,如果调用的是父类变量调用,则调用父类方法,如果是子类变量调用,则调用子类方法。如果子类和父类存在同名且有重写关系的方法,那么不管变量是什么类型,调用的都是子类的方法。

33、虚方法和抽象方法的相同点和不同点:

  相同点:

    都能被子类重写且都不能为私有的

  不同点:

    1.abstract和virtual的关键字不同

    2.vritual方法必须有实现,哪怕是空实现,而abstract方法必须没有实现

    3.virtual方法的子类可以重写父类方法也可以不重写,而抽象方法所在的类的子类必须重写该父类的方法

    4.抽象方法必须在抽象类中声明,而虚方法可以存在于任何一个类中

34、抽象类存在的意义:

  抽象类存在的目的就是指定规则,而不是具体实现,是为了约束子类的行为,具体实现交给子类来完成。

35、多态的优势:

  1.代码的内部各个层之间的关联比较小,相互之间约束少。(低耦合)

   2.方法的功能和职责单一,即一个方法只做一件事情。(高内聚)

   3.实现代码的可维护性和可扩展性,便于二次开发

   4.把不同的子类对象都当着父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的程序,以便灵活的适应不断变化的需求。

36、子类中的base关键字指向的是父类对象。它是子类对象本身,但他的类型是父类。

37、以下情况类不能被实例化:

  抽象类、静态类、类的构造函数已被私有化

38、接口——特殊的抽象类(约束和统一类的行为)

  接口中只有方法、属性、索引器和事件的声明

   接口只能用public和internal两个修饰符

   接口可以实现多继承

   如果一个抽象类继承了一个接口,那么将继承的方法既可以设置为抽象方法,也可以去实现方法(既可以在抽象类的子类中去实现,也可以再抽象类中直接实现)

.NET知识点总结二(笔记整合)的更多相关文章

  1. SprimgMVC学习笔记(二)—— 整合Mybatis

    一.整合思路 1.1 Dao层 SqlMapConfig.xml:空文件即可,但是需要文件头. applicationContext-dao.xml 数据库连接池 SqlSessionFactory对 ...

  2. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

  3. Maven学习笔记(二)—— 整合SSH框架

    一.知识点准备 1.1 什么是依赖传递? 我们只添加一个struts2-core的依赖,结果会发现所有关于struts2的依赖都进来了. 因为我们的项目依赖struts2-core-2.3.24.ja ...

  4. .NET知识点总结一(笔记整合)

    1.   .net framework原理简介,C#程序的两次编译 .NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类 ...

  5. 前端新人学习笔记-------html/css/js基础知识点(二)

    4月7日学到的知识点:     一:<img src="1.png" alt="美女"/> alt是给图片添加介绍,当图片没加载出来时,会直接显示a ...

  6. SpringBoot笔记二:整合篇

    Spring Boot与缓存 jsr-107 Java Caching定义了5个核心接口分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry. ...

  7. 笔记9:winfrom的一些知识点(二)

    一.新建,和删除文件夹 private void button4_Click(object sender, EventArgs e) { Directory.Delete(@"F:\&quo ...

  8. Springboot笔记(二)整合

    1.整合Freemarker 一种模板引擎,前端渲染模板的,类似于EL,jsp,不过比前两个好用 导入很简单   pom.xml <dependency> <groupId>o ...

  9. C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记!

    今天我们继续来学习C语言的入门知识点 11. 作用域规则 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 ...

随机推荐

  1. [LeetCode 116 117] - 填充每一个节点的指向右边邻居的指针I & II (Populating Next Right Pointers in Each Node I & II)

    问题 给出如下结构的二叉树: struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } ...

  2. nginx对比haproxy 的反向代理

    -bash-4.1# ip add | grep inet inet 172.17.0.7/16 scope global eth0 inet6 fe80::42:acff:fe11:7/64 sco ...

  3. Apache Hadoop最佳实践和反模式

    摘要:本文介绍了在Apache Hadoop上运行应用程序的最佳实践,实际上,我们引入了网格模式(Grid Pattern)的概念,它和设计模式类似,它代表运行在网格(Grid)上的应用程序的可复用解 ...

  4. Java 截取反斜杠--java使用split拆分特殊字符

    Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...

  5. Shiro-授权

    把 realms 配置给SecurityManager 在认证的时候单个realm是这样配置的: <bean id="securityManager" class=" ...

  6. StackPanel 弹出菜单 ContextMenu

    <StackPanel x:Name="stackpanel_zonghe" Margin="0,10,0,0" Background="Tra ...

  7. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  8. Node.js 实现简单小说爬虫

    最近因为剧荒,老大追了爱奇艺的一部网剧,由丁墨的同名小说<美人为馅>改编,目前已经放出两季,虽然整部剧槽点满满,但是老大看得不亦乐乎,并且在看完第二季之后跟我要小说资源,直接要奔原著去看结 ...

  9. C#文件的拆分与合并操作示例

    C#文件的拆分与合并操作示例代码. 全局变量定义 ;//文件大小 //拆分.合并的文件数 int count; FileInfo splitFile; string splitFliePath; Fi ...

  10. 文件操作2 cp mv rm

    1.cp命令 [root@rusky /]# cp 123 /test  #在linux系统中,如果文件123已经存在,则提示用户确认,在unix系统中则不提示,除非使用参数-i 交互式操作.cp: ...