封装
set方法
作用:提供一个方法给外界设置成员变量值,可以在方法里面进行过滤
命名规范
1. 方法名必须以set开头
2. set后面跟上成员变量的名称,成员变量的首字母必须大写
3. 返回值一定是void
4. 一定要接收一个参数,而且参数类型跟成员变量类型一致
5. 形参的名称不能跟成员变量名一样
6. 只写(writeonly)
get方法
作用:返回对象内部的成员变量
命名规范:
1. 肯定有返回值,返回值类型肯定与成员变量类型一致
2. 方法名跟成员变量名一样
3. 不需要接收任何参数
4. 只读(readonly)
封装的好处
1、过滤不合理的值
2、屏蔽内部的赋值过程
3、让外界不必关注内部的细节
类方法
基本概念
直接可以用类名执行的方法(类本身会在内存中占据存储空间,里面有类/对象方法列表)
1. 类方法都是以+号开头
例 + (void)printClassName;
2. 只能由由类(名)来调用
3. 类方法中不能访问成员变量(实例变量)
类方法的好处和使用场合
1. 不依赖于对象,执行效率高
2. 能用类方法,尽量用类方法
3. 场合:当方法内部不需要使用到成员变量时,就可以改为类方法
可以允许类方法和对象方法同名
工具类: 基本没有任何成员变量,里面的方法基本都是类方法
self
self:指向了方向调用着,代表当前对象
1. 访问当前对象的成员变量
例 self->成员变量名
2. [self 方法名];可以调用其他对象方法/类方法
继承
继承的好处:
1. 抽取重复代码
2. 建立了类之间的关系
3. 子类可以拥有父类中的所有成员变量和方法
注意
1. 基本上所有类的根类是NSObject
重写:子类重新实现父类中的某个方法,覆盖父类以前的做法
注意
1. 父类必须声明在子类的前面
2. 子类不能拥有和父类相同的成员变量
3. 调用某个方法时,优先去当前类中找,如果找不到,去父类中找
坏处:耦合性太强
1.继承的使用场合
1. 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2. 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
组合:是A类的属性,方法可以让B类来用,可以不用继承 //Score *_score;
super
super的作用
1.直接调用父类中的某个方法
2.super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3.使用场合:子类重写父类的方法时想保留父类的一些行为
多态(多种形态)
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
局限性:
1. 父类类型的变量不能直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法