本文章不适合入门,只适合有一定基础的人看。我更相信知识细节见高低,我是从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. JavaScript中奇葩的假值

    通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 if (boo) { // do something } while (boo) { // do some ...

  2. Linux objcopy命令

    一.简介 [功能] 将目标文件的一部分或者全部内容拷贝到另外一个目标文件中,或者实现目标文件的格式转换. [描述] objcopy工具使用BFD库读写目标文件,它可以将一个目标文件的内容拷贝到另外一个 ...

  3. GMT与UTC简介

    一.简介 许多人都知道两地时间表简称为GMT或UTC,而世界时区表则通称为World Time ,那么GMT与UTC的实质原意又是为何?世界时区又是怎么区分的?面盘上密密麻麻的英文单字代表着什么意义与 ...

  4. docker基础命令详解

    Commands: attach    Attach to a running container build     Build an image from a Dockerfile commit  ...

  5. Linux command’s Array

    #数组的声明与遍历 animals=("a dog" "a cat" "a fish") #wrong ways to use this f ...

  6. JVM 类加载过程

    类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization) ...

  7. SQLConnect_ref.cpp

    // SQLConnect_ref.cpp // compile with: odbc32.lib #include <windows.h> #include <sqlext.h&g ...

  8. [转载]ExtJs4 笔记(10) Ext.tab.Panel 选项卡

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  9. MySQL遇到check the manual that corresponds to your MySQL server version for the right syntax错误

    用MySQL新建了一个Order表,插入了一条数据.总是显示 You have an error in your SQL syntax; check the manual thatcorrespond ...

  10. mysql 存储过程,以及mybatis如何调用

    说道存储过程,很多人都知道,但是真正用的人其实很少,但是在某些必要的场景,是必须使用的,虽然可以使用java代码解决,但是效率性能远不及存储过程 曾经在sqlserver 以及pgadmin上用过,m ...