一、封装
每个对象包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来进行自己的操作。将方法、属性、字段包装在类中,通过实例化类来生成对象。
封装的好处:
1、好的封装能减少耦合
2、类内部的实现可以自由修改
3、类具有清晰的对外接口
封装就像建房子,类就是房子,属性是门窗,字段是房子里的东西,方法是人的行为。属性对字段有保护作用,防止字段被随意的修改或读取。
二、继承
对象的继承代表一种“is-a”关系,“子类is父类”。子类具有(继承)父类的所有特性,也可以定义自己独有的特性。
总结:
1、子类具有父类非private的属性和方法
2、子类可以扩展父类没有的属性和方法
3、子类可以重写父类的方法
继承的缺点:子类和父类具有强耦合性。
当两个类具有“is-a”关系时,适合用继承;当两个类具有"has-a"关系时,不适合用继承,比如,胳膊不适合继承自人。
三、多态
多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。比如猫和狗继承自动物,猫叫和狗叫都是相同的动作-动物叫,但是实现方式不同。
总结:
1、子类可以以父类的身份出现 (使用父类对象的地方都可以用子类来代替)
2、子类在工作时以自己的方式来实现
3、子类以父类的身份出现时,子类特有的方法和属性不能使用
多态的实现方式:
将父类的成员(除了字段外的其他成员,包括方法、属性、事件、索引器)声明为虚拟的:在该成员返回值类型之前加virtual关键字(虚方法可以有自己的实现);子类通过overrid(重写)将父类实现替换为自己的实现。
多态的使用方式:以父类来声明,以子类的方式来实例化。比如在调用“动物叫”方法的地方,都可以替换成”猫叫“或”狗叫“,即不同的对象执行相同的动作。