类的 成员变量 默认是 受保护的。
Person* xiaoming = [Person new]
xiaoming->name; // 这样会报错说 name 是保护权限的。
我们需要利用 getter 方法获得参数。
赋值也可以利用 setter 方法
@interface Person : NSObject{
char * _name;
int _age;
}
// 声明。get方法。
- (int)age;
// setter 方法 默认为 void 返回类型
// 对应 void setAge(int age)
- (void)setAge:(int)age;
@end
@implementation Person
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
@end
set 和 get 方法都有一个格式要求
也可以利用 @property
关键字进行快速声明 setter getter 方法。
在 .h
头文件中声明
// 使用property 后,可以不用在 .h 文件中 @interface 声明属性
@peoperty NSString* name;
@peoperty NSInteger age;
@synthesize age; // 不需要声明属性的类型。
%@ 打印 NSString* 类型
多参数构造
方法一
这样的方法很难进行一个修改。
// .h 文件
- (void) setNameAndAge: (NSString*) name: (NSINteger) age;
// .m 文件
- (void) setNameAndAge:(NSString*) name: (NSInteger)age{
_name = name;
_age = age;
}
'''
//.h 文件
- (void) setName:(NSString*)name age:(NSInteger)age;
//.m 文件
- (void) setName:(NSSteing*)name age:(NSInteger)age{
_name = name;
_age = age;
}
// main.m
Student* s1 = [Student new];
[s1 setName:@"0xc4m3l" age:21];
'''
重写 description