面向对象三大特性:成员变量的封装、继承、多态
1.封装
set方法:
1. 作用: 提供设置属性值方法。(对传进的参数进行过滤)
2. 命名规范:
1> 方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写。
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致。
5> 形参名称不能跟成员变量名一样。
get方法:
1. 作用: 返回对象内部的成员变量
2. 命名规范:
1> 肯定有返回值,返回值类型肯定与成员变量类型一致
2> 方法名跟成员变量名一样
3> 不需要接受任何参数
成员变量的命名规范:
一定要以下划线'_'开头
1. 作用: 让成员变量和get方法的名称区分开
2. 可以跟局部变量分开,一看到下划线开头的变量,一般都是成员变量。
#封装练习
弱语法
OC在运行过程中才会检测对象有没有实现相应的方法。
2.类方法
1> 以+ 开头
2> 只能由类(名)来调用
3> 类方法中不能访问成员变量
对象方法
1> 以-号开头
2> 只能由对象来调用
3> 对象方法能访问成员变量
类方法的好处和使用场合
1> 不依赖于对象、执行效率高
2> 能用类方法尽量用类方法
3> 场合: 当方法内部不需要使用到成员变量时,可以改用类方法。
可以允许类方法和对象方法同名
对象方法可以调用类方法
self的用途:
1> 概念: 指向了当前对象(方法调用者)
** self出现在对象方法中self就代表对象
** self出现在类方法中self就代表类
2> 可以利用"self->变量名"访问当前对象内部的成员变量
3> [self 方法名];可以调用其他对象方法/类方法
self:指向了方向调用者。
3.继承
1. 继承的好处
1> 抽取重复代码
2> 建立了类之间的关系
3> 子类可以拥有父类中的所有成员变量和方法
2. 注意
1> 基本上所有类的跟雷都是NSObject
不允许子类和父类拥有相同名称的变量。
2.重写:子类重新实现父类的某个方法,覆盖父类以前的做法
2.注意
1> 父类必须声明在子类的前面
2> 子类不能拥有和父类相同的成员变量
3> 调用某个方法时,有限去当前类中招,找不到一次去父类中找
3.坏处: 耦合性太强
继承的使用场合
1> 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中。
2> 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
继承: xx 是 xxx
组合: xxx 拥有 xxx
super的作用
1. 直接调用父类中的某个方法
2. super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3. 使用场合: 自雷重写父类的方法时保留父类的一些行为。
4. 多态: 父类指针指向子类对象
调用方法时会检测对象的真实形象
好处: 如果参数中使用的事父类类型,可以闯入父类,子类对象。
局限性: 父类类型的变量 不能用来调用子类的方法
1. 没有继承就没有多态
2. 代码的体现: 父类类型的指针指向子类对象
3. 好处: 如果函数/方法参数中使用的是父类类型,可以传入父类、子类对象。
4. 局限性:父类类型的变量,不能直接调用子类特有的方法。(必须强转为子类类型变量)
|
|