1.在C的学习中,我们写一段代码,通常考虑整个事件的发展的过程,开始--经过--结果,而在OC中,这样的思想需要整个转变为,做一件事,需要哪些人物、事物参与,他们分别负责做什么。比如我们玩植物大战僵尸游戏:
C的思维方式:僵尸出现--以某速度往前走--植物投射炮弹--僵尸受伤减血--植物再投射炮弹--僵尸受伤减血--植物投射--僵尸死亡
OC的思维方式:参与整个事件的人物、事物有:
僵尸 :1.僵尸名字(如路障僵尸)、僵尸的道具(如路障) 2.走路、失血、死亡
植物:1.植物类型(如豌豆射手) 2.投射炮弹
这当中,僵尸、植物就称为“类”(就是谁或者什么),以僵尸为例,“名字、道具”是僵尸这个类的属性,“走路、失血、死亡”称为僵尸的行为方法(也就是负责做什么)。我们可以用僵尸的这些属性和方法,来创建对象,比如路障僵尸,就是僵尸类创造出来的一个对象,类可以无数个对象。
名词解释, super:父类,self:对象本身
2.OC的三个特性:继承、封装多态
--继承:在OC中,如果一个类B的部分属性和方法与另一个类A所有的属性和方法相同,则可以让B继承A,来实现给A写一份代码,B全全拥有。
注意:1.继承具有单向性,B继承于A后,B具有A所有属性和方法,当B具有额外的属性和方法时,A不具有,此时,A称为父类,B称为子类
2.继承具有先子后父的特性,如果子类重写了父类中的某个方法,系统在执行时,会执行子类的方法。
3.NSObject 是所有类的父类,我们创建的任何一个类都继承这个类,它的内部是所有我们在外部可调用的系统方法的实现方法。
--封装:实现对属性、方法等具体实现访问的限制,对外只留出传入数据的接口,让写出的代码更具有隐秘性,就好比有一个袋子,具体实现的方法放在袋子里,只留出口袋的开口,供外界传入数据。同时我们可以随时根据需求修改封装内部的属性、方法等,这样也增强了项目的可维护性。
--多态:多态是指相同方法名的方法可以具有不同的实现功能,比如,在A类中有一个方法,方法名为“haveDinner”,实现是输出“我爱吃面条”,在B类中也有一个具有相同方法名的方法,实现可以改为输出“我爱吃汉堡”。A与B之间可以是继承也可以是关联,或者没有关系。系统方法也可以重写实现。