本文章不适合入门,只适合有一定基础的人看。我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下。但写的内容也可能含有其他版本framework的知识,也是为了方便自己更好的记忆C#知识。--Aaronyang的博客(www.ayjs.net)

1. 继承-的疑虑

1.1 一个类,只有一个父类,可以实现多个接口,还要注意顺序

一个结构,没有父类,可以实现多个接口

接口可以继承多个接口,子类必须全部实现

  public class myclass:BaseClass,IInterface1,IInterface2

public struct mystruct:IInterface1,IInterface2

public Interface IInterface1:Interface2,Interface3

1.2 virtual "虚"  关键字,可以标记要作为父类的 属性和函数,函数可以写具体的代码,静态函数和字段不可以标记virtual,子类(派生类)继承它后可以override,不override,默认使用父类的同名方法。

new 出来的隐藏方法,子类和父类拥有同样方法签名的方法,但没有用override重写父类,子类希望被别人调用时候,调用父类的,但自己又需要这样名字的方法,就可以使用new关键字,当然不标记也可以,但编译会警告,不影响使用。

public new int Method1(){}       在本类中就可以使用  this.Method1()  就是本类中的,如果使用base.Method1() 调用的就是父类的。当然你也可以重命名方法来避开这个问题。

1.3 abstract的疑虑:抽象类不能实例化(就是new出来),抽象类的方法不能具体实现,就是个方法声明,与接口概念很像的地方。子类必须重写父类定义的抽象方法。 abstract class MyClass{  public abstract int MyMethod1();}

所以面试经常有跟接口对比的区别的题目

结论:抽象类可以继承抽象类,父抽象类的 方法,在子抽象类可以不实现 ,且可以包含非抽象方法

1.4 sealed "密封" ,密封类不能被继承,密封方法不能被重写。比如string就是一个密封类。

1.5 子类构造函数的疑虑: 先执行父类的,从上往下初始化。很多人可能都不知道,构造函数先执行System.Object对象的构造函数,一步一步往下的。     --因为好多面试题考 :base    初始化值,然后子类使用:base

1.6 除了常用的public,private,protected,还有的可能你不经常用的修饰符   internal 本程序集     protected internal  本程序集的派生类

extern 仅静态[DllImport],程序在外部用另一种语言实现

1.7 接口可以包含什么:除了属性和方法的声明,还有索引器和事件的声明。不能声明"静态"或者"虚"的东东。不能包含非public的东东,不能包含抽象方法,能继承其他接口。好了留个题目:不百度的话,说出至少5个常用的接口。

显示实现接口和隐式实现接口的总结:参考文章

  1. 当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性。
  2. 当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实现。即使没有相同的方法签名,仍推荐使用显式接口,因为可以标识出哪个方法属于哪个接口。
  3. 隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访问。

1.8 可能跳过的节点: 继承后的一些调用,接口的调用。

经常面试题目: abstract和接口的主要区别,OOP三大特性和5大设计原则,一些某某某和某某某能否继承的问题,访问修饰符的区别,

出代码题,最后输出多少。

1.9 作为一年以上的开发人员,都知道的我都跳过了,可能存在疑问的地方保留了。

[AaronYang]C#人爱学不学[3]的更多相关文章

  1. [AaronYang]C#人爱学不学[1]

    当前编写时间:2014年12月24日21:11:14   编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...

  2. [AaronYang]C#人爱学不学[6]

    不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: si ...

  3. [AaronYang]C#人爱学不学[4]

    本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...

  4. [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]

    没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...

  5. [AaronYang]C#人爱学不学[5]

    这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --Aaronyang的博客(www.ayjs.net) 1. 数组-的疑惑? 1.1  多维数组      ...

  6. [AaronYang]C#人爱学不学[7]

    做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包 ...

  7. [AaronYang]C#人爱学不学[2]

    1. 记事本写C#,脱离vs 新建记事本,名字为 helloworld.cs using System; namespace Hello{ public class HelloWorldSay{ st ...

  8. AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享

    原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...

  9. AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享

    原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...

随机推荐

  1. Java SWT 做计算器。

    java  --  swt  - -  计算器 环境搭建 安装java.eclipse.以及对应的swt插件. 开始工程 建立工程: 在java下建立一个在其他 —- WindowsBuilder — ...

  2. Linux下Mysql安装

    1.下载安装包 首先查看Linux版本: [root@localhost ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch ...

  3. SecureCRT 使用技巧

    VanDyke CRT 和 VanDyke SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件.二者不同的是SecureCRT支持SSH∗( ...

  4. 【ASP.NET 基础】Page类和回调技术

    Page 类有一个 IsPostBack 属性,这个属性用来指示当前页面是第一次加载还是响应了页面上某个控件的服务器事件导致回发而加载. 1.asp.net页面的声明周期 asp.net页面运行的时候 ...

  5. 循环队列+堆优化dijkstra最短路 BZOJ 4152: [AMPPZ2014]The Captain

    循环队列基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,fr ...

  6. 第20章 DLL高级技术(3)

    20.4 函数转发器 (1)函数转发器原理(下图是利用Dependency Walker打开Kernel32.dll得到) ①图中CloseThreadpool*等4个函数转发到NTDLL中相应的函数 ...

  7. java 14-3 正则表达式的分割

    分割功能 String类的public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串. 例子: 可以用来做年龄段的筛选,比如说,我要筛选18-26之间 ...

  8. 【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。

    今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑 ...

  9. IC系统组成概论

    IC系统是什么? 对算法工程师来说,IC系统是完成特定功能的硬件.对架构设计师来说,IC系统包括控制,运算,存储部分.电路设计工程师来说,IC系统是加法器,乘法器,与非门,运算放大器,开关电容等的搭配 ...

  10. String类及常用方法

    在学习String类之前,先看一道笔试题:new String("abc")创建了几个对象? 答案: 两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中. 原因:主 ...