面向对象三个基本特征由:封装,继承和多态构成.

1:封装

   封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。

封装表面的意义便是将事物包裹起来,在生活中封装好比我们每天对电脑开关机,所以电脑就有开机和关机二个属性,开关机的方法被包裹在了电脑里,而我们所需要的便是按按钮,实现开关机,我们并不用理解是怎么实现的,只需要动动指头就行.

    对于开发者而言,面向对象程序的设计(Visual Studio等),会有二个身份,设计者和使用者.

    使用者就是利用已经提供好的所有对象,根据需求设计想要的程序.已经设计好的对象,我们直接调用就好,不必再重复的创造轮子

,.net FromWork所提供的类库,好比开关机

    设计者,就是设计功能的人,我们所用的软件的功能不可能面面俱到,有的时候需要我们来设计一个需要使用的对象.对于设计者要考虑到那些应该显示,那些需要被包裹起来,在C#中便需要用到修饰符 public 公开的 private 私有的 protected 半公开的

     public:表明所有对象都可以访问;
     protected:表明只有该类对象及其子类对象可以访问;(关于继承,会在以后介绍)
     private:表明只有对象本身在对象内部可以访问;

2:继承

 

 

     通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
     作用就是移除冗余的代码,其实生活中有很多继承的例子,如卡车,公共汽车,他们都是汽车,但卡车有自己的特征:有货舱,有额定载重,行为是可以拉货卸货,公共汽车特征:载客,有载客量,行为时报站,停靠站,但他们都有共同的特点:耗油,有车轮,有时速,可以刹车,行驶等等,他们就是继承关系,卡车和汽车便是继承汽车的一方
     而在C#中,一个类可以继承另一个类,被继承的类就是父类,继承的其他类便是子类或称派生类,父类里保留的是所以子类所需要的功能,而子类中冶可以增加新的数据和功能,也可以用以存在的类的功能.
     继承是面向对象编程中一个重要的特性,在有继承关系的二个类中,子类不仅具有自己独特的成员,还具有父类的成员.
     在使用时,可以用base调用父类的属性,也可以调用父类的方法和构造函数,父类中的成员如果用private修饰的话,他将作为私有成员,其他类无法访问,如果设置为共有成员public则任何类都可以访问,这样不符合封装和其他方面的要求,我们便需要用另外一种访问修饰符protected,被这个访问修饰符修饰的成员允许其子类访问,而不允许其他非子类访问.
隐式构造函数:
     在我们创建子类对象时会首先调用其父类的构造函数,然后才会调用子类本身的构造函数,在没有指明要调用父类的哪一个构造函数时,系统会隐式的调用父类的无参构造函数.
显示构造函数:
     C#可以用base关键字调用父类的构造函数,只要在子类构造函数后添加:base("参数列表"),就可以指定该子类的构造函数调用父类的那个构造函数.这样便可以实现继承属性的初始化,然后在子类本身的构造函数中完成对子类特有的属性的初始化.
继承的二个特性:
传递性和但根性.
继承的价值:
继承模拟了现实世界的关系,一切皆为对象.
继承实现了代码的重用.
继承使得程序结构更加清晰.
 
3:多态
多态按字面理解就是多种形态,指同一操作作用于不同的对象时,可以产生不同的解释,产生不同的结果.
实现多态:
虚方法.
抽   象.
接   口.
在生活中有三种人:理发师,演员和外科医生当他们听到CUT时会产生不同的结果:
理发师开始剪发;
演员停止表演;
医生会在病人的身体上切口;
可以把三种不同职业的人看作三个不同的子类对象;他们都继承自人类,每个对象得到的命令都相同,但对于他们来说相同的命令有着不同的含义,
从面向对象角度考虑,三种不同的对象对于同一个方法调用表现了不同的行为.
这便是多态