前言
什么是面向对象呢?之前我们做一件事的时候,常常是确定,先干什么,然后怎么做,最后可以完事了。其实我们不妨这么想一下,我们做事的时候是可以这样的:这件事中涉及了什么对象角色?如果我要把这件事做成那么就需要对象之间是如何协作的?第二种方法,就是今天说的面向对象的方法了,好处正在慢慢体会。今天我想说的面向对象的三大特性,我想这一定是精髓的部分,今天就来了解一下。
封装
先来一张萌萌哒的图片:
对于封装这个概念,这个图片可以说明一些问题的,小宝宝在电脑,而电脑本身是对封装的一个较好的体现,电脑将他的功能,属性,方法封装在里面,当我们使用的时候并不需要知道里面有什么,是什么原理,只要通过键盘,鼠标去做我们想要做的事情。而这就是封装的体现。
优点
对于封装,我们可以还拿上图例子来说明问题,电脑有很多功能,比如:播放声音,显示信息,输入信息等等。他的优点我们结合这些功能来说。
减小耦合
我们希望我们设计软件的过程中,对于一个功能比如显示信息的功能,要进行版本更新了,这样我们要做的就只是对显示信息这个模块进行修改,便可以达到我们的要求。试想,如果各个模块的耦合度很高,我们不说显示信息的功能是否被我们成功的升级了,但是在修改显示信息的功能时是否会将播放声音的功能修改了,这是不是雪上加霜了。封装能够让模块之间的独立性更高。
类内部修改方便
由于模块之间的耦合度小,相互作用小,那么一个模块的修改不会对另一个模块的正常使用造成影响。
有清晰的对外接口
对于输入的功能,我们只要通过键盘,鼠标即可完美的完成输入的操作,这个接口更好的方便了该功能的实现。
继承
像大头儿子和小头爸爸一样,继承是大头儿子从小头爸爸那里继承了爸爸的一些基因。其实继承者是对被继承者的特殊化,除了拥有被继承者的特性外,还可以有自己的特性。就像儿子的头比较大,这是儿子的特殊特性,而都有头,这就是继承而来的了。
子类继承父类
学习继承,有几点我们还是清除一点会更好。
修饰
我们知道,C#中的修饰有三种:public ,private ,protected 。当子类继承父类的时候,子类可以拥有父类的非private属性和功能。protected:表示派生类对基类有完全的访问权限,也就是说用该方法修饰的内容对子类公开,但不对其他的类公开。
特殊性
子类可以有自己的属性,可以扩展父类没有的属性和功能。也就是说派生类可以有自己独特的性质,就像大头儿子的大大的脑袋一样。可以有自己不同于爸爸的特性。
方法重写
对于基类中的方法,子类可以进行重写,前提是基类中的方法是virtual(虚方法)可以增加实现方式的灵活性,基类中写了一个虚方法。这样在子类当中 override(重写)这个方法来实现这个功能。
多态
字面上的意思是“多种状态”,我们也可以说不同的对象(方式)可以执行相同的动作。想上面的例子,基类中写的虚方法,可以在自己的很多个派生类中重写,这个过程相当于一个操作,我们可以用不同的对象来实现了。
提示
实现方式
对于多态的实现方式,虽然基类中写明了虚方法,但是实现时还是要依靠派生类中自己的方式来实现。独有属性
子类虽然是以父类的身份来实现这个虚方法,但是子类中特有的属性和方法是不可以使用的,如果可以使用的话就不符合同一操作的不同实现方式了。而是一种操作,一种实现方式。
举例
至于多态相聚一个简单的例子,洗衣机洗衣服,洗衣机要完成的任务是洗衣服的操作,对于这个操作,他以不同的方式来实现,可以是干洗,可以是时间不同。这也是多态的一个体现。
结语
对于这些理解,我也只是停留在表面,还需要多加练习,才可以有更好的理解。