一、封装(set方法和get方法)
-
封装的好处:
过滤掉不合理的值,屏蔽内部的赋值细节,让外界不比关心内部的细节。
-
set方法:
1.作用:提供一个方法给外界设置成员变量的值
2.命名规范:
1> 方法名必须是set开头
2> set后面跟上成员变量的名称,并且成员变量的首字母必须是大写
3> 返回值一定是void
4> 一定要接受一个参数,而且参数类型跟成员变量的类型一致
5> 形参名称不能和成员变量名一样
例:
- (void)setAge : (int) newAge; // 方法声明 - (void)setAge : (int) newAge // 方法实现 { if (newAge <= 0) { newAge = 1; // 对传入的参数进行过滤 } age = newAge; }
-
get方法:
1.作用:返回对象内部的成员变量值
2.命名规范:
1> 肯定有返回值,并且返回值类型肯定和成员变量类型一致
2> 方法名和成员变量名一样
3> 不需要接受任何参数
例:
- (int) age; // 方法的声明 - (int) age // 方法的实现 { return age; }
-
成员变量的命名规范
成员变量的命名规范:一定要以下划线“_”开头;
作用:1.让成员变量和get方法的名称区分开
2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量
代码练习:
#import <Foundation/Foundation.h> @interface Student : NSObject { // 成员变量尽量不要用@public保证数据的安全性,没有@public就不能通过 对象->成员变量 来赋值(访问),这是可以提供一个set方法给外界设置成员变量的值(虽然没有了@public,但是在对象方法内还是能直接访问成员变量的) // @public int age; } - (void)setAge:(int)newAge; - (int)age; - (void)study; @end @implementation Student // set方法的实现 - (void)setAge:(int)newAge { // 对传进来的参数进行相应的过滤 if(newAge <= 0) { newAge = 1; } age = newAge; } // get方法的实现 - (int)age { return age; } - (void)study { NSLog(@"%d岁的学生在学习", age); // 这里的使用age即使在声明成员变量时没有写@public也可以直接访问(对象方法内部可以直接访问成员变量) } @end int main() { Student *stu = [Student new]; // 通过调用set方法对对象内部的成员变量进行赋值 [stu setAge:-10]; [stu study]; // 由于没有了@public这是调用get方法获取对象内部的成员变量值 NSLog(@"这个学生的年龄是%d", [stu age]); return 0; }
时间: 2024-08-08 06:16:48