有关C#抽象类

来源:互联网 发布:华东理工大学网络 编辑:程序博客网 时间:2024/05/23 22:12

1.有关今天使用到工厂模式的的时候,用到抽象类和抽象函数,在用子类继承的时候,出现的很多错误,无数次在内心里骂了n次fuck!!!!

好吧 ,我是新人,我要沉住气,好好学习,不管啦,和大家分享一下今天学到一些很关键的知识。

大学里教的东西很少设计工厂模式,那今天师傅让我用工厂设计模式作一个项目的时候,哇塞,捉襟见肘,以前也只是那么随意一看,没有运用的到实际中,现在要用的时候感觉真捉急。

好在有个好师傅,循序渐进讲述简单工厂模式和工厂模式的区别之类的,现在理解了之后其实也就是针对一个原则的区别:关闭-开放原则,在构造软件的过程中,对扩张开放,但是对修改封闭。工厂模式虽然代码显得多,但很明显做到这点。简单工程模式,一旦要添加一个子类的时候,就要去人工手动的修改工厂类里面的函数。但是在工厂模式里面,我们只需要再添加一个工厂就好了。

说穿了,其实工厂模式是基于简单工厂模式的。

上传的简单的计算器就是用工厂模式做的,相对比较简单。我不和大家分析很多了,网上有很多分析的很好的,我这边也有工厂模式的代码。

言归正传,有关子类和父类,我觉得今天收益非浅

就是为什么有子类和父类的存在,为什么会有抽象这个概念,我觉得是因为很多事物之间都有共同点的原因。

大学三年,其实用的不多,也没能深刻体会到。

2.在抽象类里面有很多抽象函数,这些函数为什么抽象而不实例化直接调用呢?这是因为每个事物都有自己的类似的动作,但是又不相同。对于相似而又不相同的操作我们用抽象函数会方便很多很多。。。。

蓝后将到抽象函数了,就引入两个关键字:abstract和virtual

额,其实我主要用的是abstract,在父类里声明抽象函数,抽象函数是没有方法体的,蓝后在子类里面重写(override),而且只要在抽象类里面定义成抽象函数的,在子类里面的一定要重写!!!

蓝后虚函数是有代码的并明确允许子类去覆盖,但子类也可不覆盖,就是说可以直接用,不用重写。用的有点不习惯啊。。。。

3.蓝后偶就脑子抽筋的想到一个问题,如果在父类里面有一个函数,不是抽象函数也不是虚函数,那么你觉得如果在子类里面重写父类的这个方法呢?这个时候我们就用到new关键字,默认隐藏父类的同名函数,好的,俺还没来的及做实验,。。。。。要12点了,不行,俺得睡觉啦!!!晚安,各位IT界的同胞们。。。。。。