一、封装(Set方法与get方法)
1. set方法:
1)作用:提供一个方法给外界设置成员变量值。
2)命名规范:
--> 方法名必须以set开头
--> set后面跟上成员变量的名称,成员变量的首字母必须大写
--> 返回值一定是void
--> 一定要接收一个参数,而且参数类型跟成员变量类型一致
-->形参的名称不能跟成员变量名一样
2. get方法:
1) 作用:反回成员内部的成员变量
2) 命名规范:
--> 肯定有反回值,返回值类型肯定与成员变量类型一致
--> 方法名跟成员变量名一样
--> 不需要接收任何参数
以Student类为例,写出其set方法和get方法
#import <Foundation/Foundation.h>
@interface Student : NSObject
{
int age; // 年龄
int no; // 学号
}
- (void)setAge:(int)newAge; // set方法
- (int)age; // get方法
- (void)setNo:(int)newNo;
- (int)no;
@end
@implementation Student
- (void)setAge:(int)newAge // setAge方法的实现
{
age = newAge;
}
- (int)age
{
return age;
}
- (void)setNo:(int)newNo //setNo方法的实现
{
no = newNo;
}
- (int)no
{
return no;
}
@end
在该student类中,声明了 age和no两个成员变量以及对应的set方法和get方法。在set方法中可以看到其方法的类型是void类型,需要设定一个参数传递给该方法,该参数的类型必须与对应的成员变量类型一致。在get方法中则不需要参数,直接通过返回一个值即可,那么get方法的类型则必须和成员变量的类型一致。
其实往往在定义成员变量时会在变量前加上“_”,这样成员变量就更加明显,避免定义的变量与成员变量重复,那么该Student类可以声明这样:
#import <Foundation/Foundation.h>
@interface Student : NSObject
{
int _age;
int _no;
}
- (void)setAge:(int)age;
- (int)age;
- (void)setNo:(int)no;
- (int)no;
@end
方法的实现:
@implementation Student
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
- (void)setNo:(int)no
{
_no = no;
}
- (int)no
{
return _no;
}
@end
Objective—C中通过这样一种方式进行封装,那么外界就不可以直接参与修改该类的成员变量。
3.类方法:
类方法是指直接用类名来执行的方法。
--> 类方法都是以“+”开头,只能由类(名)来调用,类方法中不能访问成员变量。
--> 类方法不依赖于对象,执行效率高。
--> 能用内方法尽量用类名。
--> 当方法内部不需要用到成员变量时,就可以改为类方法
--> 可以允许类方法和对象方法同名。
4.self关键字:
self指向的是当前对象,通过self关键字可以访问成员变量,同时self访问访问成员变量时,可以区别同名的局 部变量。其实self关键字功能和Java、C++中的this关键字有些类似。
self是一个指针,在每一个方法中都有一个self指针
self可以出现在所有的方法中(对象方法和类方法),不能在函数中
self指向调用者。(谁调用它就指向谁)
可以使用self->成员变量 访问成员变量,可以使用[self 方法名]调用方法