多态之虚方法,抽象类,接口
来源:互联网 发布:淘宝拍卖车 编辑:程序博客网 时间:2024/06/10 09:08
又系统性的看了遍多态的东西。现坐下总结权当回顾。
首先是多态的概念,是为了让一个对象表现出多种形态(类型),可有三种实现手段。多态屏蔽了差异性,不需要判断 if(person is chinese),可将多种不同类型的对象放到同一类型的集合中方便处理。增强了扩展性。
1、虚方法。virtual, 当多个对象可以抽离出一个类型,而且该类型有意义,有可以实现的方法时,用虚方法,父类中的虚方法必须能实现。子类可重写。
2、抽象类。abstract, 当抽离出来的这个类型无意义时,又共同的方法,但父类方法不知道怎么实现的时候,应使用抽象类。父类方法是空方法体。
抽象类中可以写非抽象成员。非抽象类中不能有抽象成员,因为抽象的不能被实例化。
总之,如果类中有需要有抽象成员,就写成抽象类。即如果抽离出来的共同的方法不能被实现时就要抽象类。
简单工厂模式用的就是抽象类。
注:5类访问修饰符,修饰类的只有两种。protected 和 internal 作用范围没有可比性。
形参实参都要开辟空间。person p2=p1,是将p1的引用10001拷贝了一份给p2,sting s2=s1,字符串的不可变性,是在堆中重新开辟了空间,两个引用不一样。
int num=10; test(ref n){n++} test(num)这里面num 和形参n在栈中的地址是一样的。是将num在栈中的地址copy了一份给n。
3、接口。interface,可解决c#继承的单根性。是规范、能力。有相同的行为或者能力时用接口。(会不会时,能不能时)
现在都流行面向接口编程,比如天气预报,支付宝,对外提供接口。
接口可有自动属性,方法,索引器成员(说白了都是方法)。可是自动属性会生成私有字段。不能够有字段和构造函数。方法无修饰符的空方法体。
显示实现接口:解决类中方法重名问题。 子类中 private void Iflyable.fly(){...} ,fly(){...} 调用 bird b=new bird();iflyable b2= new bird(); b2.fly()(注意调用的是父类的函数,只是被子类重写了,子类中可以是private的)
- 多态之虚方法,抽象类,接口
- C#类、接口、虚方法和抽象方法-虚拟方法与抽象方法之区别
- C#多态的实现:虚方法、抽象类、接口
- 接口,抽象类,虚方法
- 接口、抽象类、虚方法
- 多态之抽象类与接口
- C#之抽象类、虚方法、重写、接口、密封类
- C#.Net多态 之 抽象类、虚方法 与 接口
- 大龙的学习笔记之“虚方法,抽象方法,重写,抽象类,接口”
- 接口、抽象类、抽象方法
- 接口、抽象类、虚方法、抽象方法、普通方法理清
- 接口-抽象,虚方法
- 接口、抽象类、抽象方法、虚方法 的区别
- 抽象类和接口 与 抽象方法和虚方法
- 接口、抽象类、抽象方法、虚方法 的区别
- 抽象类 接口 抽象方法 虚方法【基本说明】
- C#中的虚方法、抽象方法、抽象类以及接口
- 接口、抽象类、虚方法区别
- Win8Metro(C#)数字图像处理--2.32图像曝光算法
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- cocos2d-x中3.0升级3.3后ScrollView显示不正常
- 指针和数组
- chromium之extension机制简单分析三:webstore API实现
- 多态之虚方法,抽象类,接口
- 数据库调优教程(十一) 设计一张漂亮的表
- JAVA 服务提供者框架介绍
- getopt()
- 打造你的开发神器——介绍Android Studio上的几个插件
- C#作业
- 关于Restful api架构
- Canvas绘制贝塞尔曲线
- 被jar包冲突害惨了