本次主要学习面向对象的三大特性:封装、继承和多态中的封装
封装
1、 好处
降低耦合率
可重复调用类中的属性
提高安全性,外部不能随便修改变量的值,保证了数据的安全性
2、 set方法
1.作用:提供一个方法给外界设置成员变量,可以在方法里面对参数进行相应的过滤
2.命名规范
1> 方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型和成员变量类型一致
5> 形参的名称不能跟成员变量名一样
3、 get方法
1.作用:返回对象内部的成员变量
2.命名规范
1> 肯定有返回值,返回类型肯定与成员变量类型一致
2> 方法名为成员变量名去掉下划线 _ ,成员变量在定义时,一般以下划线 _ 开头
3> 不需要接收任何参数
4、 成员变量
命名规范:一定要用下划线 _ 开头
作用:
1.让成员变量和get方法区分开
2.可以跟局部变量区分,一看到下划线开头的变量,一般都是成员变量
5、 对象方法和类方法
1.对象方法
1> 减号 - 开头
2> 只能由对象调用
3> 对象方法中能访问成员变量(实例变量)
2.类方法
1> 加号 + 开头
2> 只能由类(名)来调用
3> 类方法中不能访问成员变量(实例变量)
3.类方法的好处
1> 不依赖于对象,执行效率高
2> 能用类方法尽量用类方法
3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法
允许类方法和对象方法同名
示例代码
1 #import <Foundation/Foundation.h> 2 3 // 定义一个性别枚举 4 typedef enum { 5 SexMan, 6 SexWoman 7 } Sex; 8 9 @interface Student : NSObject 10 { 11 // 成员变量 12 int _no; 13 Sex _sex; 14 } 15 // sex的set和get方法的声明 16 - (void)setSex:(Sex)sex; 17 - (Sex)sex; 18 @end 19 20 @implementation Student 21 // sex的set和get方法的实现 22 - (void)setSex:(Sex)sex { 23 _sex = sex; 24 } 25 - (Sex)sex { 26 return _sex; 27 } 28 @end 29 30 int main() { 31 // 创建一个学生对象 32 Student *stu = [Student new]; 33 // 调用stu对象性别的set方法 34 [stu setSex:SexMan]; 35 // 调用stu对象性别的get方法 36 NSLog(@"%d", [stu sex]); 37 38 return 0; 39 }