面向对象的三大特征 分别是 封装 继承多态。
一,封装
什么是封装?
封装(encapsulation)又叫隐藏实现(Hiding the implementation)。就是只公开代码单元的对外接口,而隐藏其具体实现。
比如你的手机,手机的键盘,屏幕,听筒等,就是其对外接口。你只需要知道如何按键就可以使用手机,而不需要了解手机内部的电路是如何工作的。封装机制就像手机一样只将对外接口暴露,而不需要用户去了解其内部实现。细心观察,现实中很多东西都具有这样的特点。
2.如何实现封装?
在程序设计里,封装往往是通过访问控制实现的。
3.为什么要封装?封装带来的好处。
a.封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。
只要电话的外部接口(键盘,屏幕,使用方法等)不发生改变,那么不管电话内部电路,技术如何改进,你都不需要重新学习就可以使用新一代的电话。同样,只要汽车的方向盘,刹车等外部接口不变,那么,不论如何改造它的发动机,你也一样会驾驶这类汽车。
封装所带来的好处是:明确的指出了那些属性和方法是外部可以访问的。这样当你需要调整这个类的代码时,只要保证公有(Public:)属性不变,公有方法的参数和返回值类型不变,那么你就可以尽情的修改这个类,而不会影响到程序的其他部分,或者是使用到这个类的其他程序。
b.封装使整个软件开发复杂度大大降低。
能很好的使用别人的类(class),而不必关心其内部逻辑是如何实现的。你能很容易学会使用别人写好的代码,这就让软件协同开发的难度大大降低。
c.封装还避免了命名冲突的问题。
封装有隔离作用。电话上的按键和电视遥控器上的按键肯定用处不同。但它们都可以叫做按键,为什么你没有弄混呢?很显然一个属于电话类一个属于遥控器类。不同的类中可以有相同名称的方法和属性,但不会混淆。
二,继承
1.继承的好处:
1> 抽取重复代码
2> 建立了类之间的关系
3> 子类可以拥有父类中的所有成员变量和方法
2.注意点
基本上所有类的根类是NSObject 。
子类方法和属性的访问过程:如果子类没有,就去访问父类的。
父类被继承了还是能照常使用的。
父类的静态方法。
画继承结构图,从子类抽取到父类。
NSObject的引出:全部OC类的最终父类,包含了一些常用方法。
三,
三、多态
1.没有继承酒没有多态。
2.代码的体现:父类类型的指针指向子类对象。
3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象。
4.局限性:
父类类型的变量不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法