封装、继承和复合、多态

原创
2016/07/15 14:38
阅读数 82

一.通过对封装的学习,了解了其安全性。
成员变量前面有作用域限定符(protected,public,private)。在访问成员变量时,一般不声明的情况下都是private私有的,是受protected保护的,只有执行@public公开的情况情况下才可以改变成员变量的值。类的成员变量是在括号{ }之间的内容,而括号外的@interface@end 之间是方法的定义。在接口部分中,定义的方法只有方法的定义,没有方法的实现。
@public作用域限定的实例变量,可以在任何情况下访问;@private作用域限定的实例变量,只能在这个类里面才可以访问;@protected作用域限定的实例变量,可以在这个类里面和这个类的派生子类里面访问,在类外的访问时不推荐的,但也可以访问。
访问成员变量,可以通过读取方法(getter)和设定方法(setter)进行的。如果不考虑封装的问题,单从技术上讲,可以直接通过对象访问成员变量,访问操作符是"->",如p->tile,也可以取得tile成员变量的内容(*p为指针,在main函数中创建的新对象)。当然访问时要改变值的话,需要@public公开。
函数前面的减号(-)表示对象方法,-(void)setNumber:(int)num;可以使用类属性,但是需要实例化;main中需新建对象,才可以调用。
函数前面的加号(+)表示类方法,+(void) setStudent;不可以使用类属性,也不需要实例化;main中可以直接调用,无需新建对象。
二.通过对继承的学习,了解其可以减少累赘性。
对于两个相似的类,可以定义他们的父类。只需对父类一次定义,子类无需再定义就可以通过调用父类实现其所需。在重写时,输出的是子类的内容,若子类与父类的名不同不能重写,一个有参数一个无参数,还需子类在其接口进行声明。子类不能继承父类中作用域限定符为@private 的成员变量。子类可以重写父类的方法以及命名与父类同名的成员变量。

三.复合、多态

对象间的组合叫做复合。复合是通过包含实例变量的对象指针实现的。NSLog()可以使用%@格式符来输出对象。 关键字self和super。self:[self 方法名]调用本类的方法。super:[super 方法名]在子类调用父类被覆盖的实例方法,这样既可以重写,又能调用父类的方法。

多态,父类的指针类型指向子类实例化对象:父类名*对象名=[子类名 new] (实例化子类)

 [对象名 子类方法名] (调用)。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部