------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.类的组成
- 类的声明:保存在.h文件中,用于声明对象的属性(成员变量)和方法。使用关键字@interface 和 @end
- 类的实现:保存在.m文件中,用于实现声明过的方法。使用关键字@implementation 和 @end
二.类名
- 类名的第一个字母必须大写
- 不能有下划线
- 多个英文单词,用驼峰标识
三.类的声明:成员变量和方法
- 成员变量的作用域有四种情况
- @public:在任何地方都可以直接访问,可以让外部的指针间接访问对象内部的成员变量
- @protect:可以在当前类以及子类的实现@implementation中直接访问,不能在main函数中访问(默认的)
- @pravite:只能在当前类的实现@implementation中直接访问,但是在子类中依然有这个成员变量,只能间接访问
- @package:同一个体系内(框架)可以访问,介于@privete和@public之间。
注意:
- 什么都不写,默认是@protect
- 写在实现中的成员变量(在声明中没有写)默认是私有的的@private,即使写@public也是私有的 。这是因为只包含.h头文件,不会包含.m文件,所以在.m实现中的成员变量是私有的,编译器在编译时,不包含.m文件,也就看不到.m实现中定义的成员变量,所以不认识,也就不能直接访问
- @implementation中不能定义和@interface中一样的成员变量
- 默认情况下初始化是0
2.方法
- +开头的是类方法,例如+(void)run;
- -开头的是对象方法,例如-(void)run;
四.类的声明
#import
//包含主头文件,因为后面用到了NSobject
@interface Person : NSObject //在这里冒号表示继承,让person继承NSobject的目的是让Person这个类具备创建对象的能力
{
// 这里声明属性(默认情况初始化是0),成员变量必须写在大括号里面
@public //声明成员变量的作用域
int age;
char *name;
}
// 这是一个对象方法的声明,只有Person对象才可以调用
- (void) eat; //对象方法的声明写在大括号外面
@end
- 什么都不写,默认是@protect
- 写在实现中的成员变量(在声明中没有写)默认是私有的的@private,即使写@public也是私有的 。这是因为只包含.h头文件,不会包含.m文件,所以在.m实现中的成员变量是私有的,编译器在编译时,不包含.m文件,也就看不到.m实现中定义的成员变量,所以不认识,也就不能直接访问
- @implementation中不能定义和@interface中一样的成员变量
- 默认情况下初始化是0
2.方法
- +开头的是类方法,例如+(void)run;
- -开头的是对象方法,例如-(void)run;
四.类的声明
#import
//包含主头文件,因为后面用到了NSobject
@interface Person : NSObject //在这里冒号表示继承,让person继承NSobject的目的是让Person这个类具备创建对象的能力
{
// 这里声明属性(默认情况初始化是0),成员变量必须写在大括号里面
@public //声明成员变量的作用域
int age;
char *name;
}
// 这是一个对象方法的声明,只有Person对象才可以调用
- (void) eat; //对象方法的声明写在大括号外面
@end
五.类的实现
#import "Person.h" //包含.h头文件,拥有类的声明
@implementation Person
// 这是一个对象方法的实现,只有Person对象才可以调用
- (void)eat
{
NSLog(@"姓名:%s, 年龄:%d", name, age);
}
@end