[AaronYang]C#人爱学不学[3]
本文章不适合入门,只适合有一定基础的人看。我更相信知识细节见高低,我是从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.8 可能跳过的节点: 继承后的一些调用,接口的调用。
经常面试题目: abstract和接口的主要区别,OOP三大特性和5大设计原则,一些某某某和某某某能否继承的问题,访问修饰符的区别,
出代码题,最后输出多少。
1.9 作为一年以上的开发人员,都知道的我都跳过了,可能存在疑问的地方保留了。
[AaronYang]C#人爱学不学[3]的更多相关文章
- [AaronYang]C#人爱学不学[1]
当前编写时间:2014年12月24日21:11:14 编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...
- [AaronYang]C#人爱学不学[6]
不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: si ...
- [AaronYang]C#人爱学不学[4]
本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...
- [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]
没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...
- [AaronYang]C#人爱学不学[5]
这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --Aaronyang的博客(www.ayjs.net) 1. 数组-的疑惑? 1.1 多维数组 ...
- [AaronYang]C#人爱学不学[7]
做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包 ...
- [AaronYang]C#人爱学不学[2]
1. 记事本写C#,脱离vs 新建记事本,名字为 helloworld.cs using System; namespace Hello{ public class HelloWorldSay{ st ...
- AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
- AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
随机推荐
- hdu 1561 The more, The Better(树形dp,基础)
The more, The Better Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- R语言中数据框的横向合并与纵向合并
#横向合并ID<-c(1,2,3,4)name<-c("Jim","Tony","Lisa","Tom")s ...
- linux 删除已输入的命令行
ctrl + w —往前删除一个单词,光标放在最末尾ctrl + k —删除到末尾,光标放在最前面(可以使用ctrl+a) —————————————————————-华丽的分割线ctl + u 删除 ...
- oracle 高水位线详解
一.什么是水线(High Water Mark)? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称 ...
- JAVA基础之对象的初始化
本文主要记录JAVA中对象的初始化过程,包括实例变量的初始化和类变量的初始化以及 final 关键字对初始化的影响.另外,还讨论了由于继承原因,探讨了引用变量的编译时类型和运行时类型 一,实例变量的初 ...
- leetcode-Single Number III 找独数
Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...
- 搜索服务solr 一二事(1) - solr-5.5 使用自带Jetty或者tomcat 搭建单机版搜索服务器
solr,什么是solr,就是你要吃的东西“馊了”,不能吃了,out of date~ 嘛...开个玩笑,发音就是‘搜了’,专门用于搜索的一个开源框架,lunce就不说了,不好用,麻烦 来讲讲solr ...
- 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)
2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...
- NSURLSession学习笔记
NSURLSession学习笔记(一)简介 一.URL Session的基本概念 1.三种工作模式: 默认会话模式(default):工作模式类似于原来的NSURLConnection,使用的是基于磁 ...