Objective-C是面向对象的编程语言,所以具备面向对象编程语言的共性即:支持可重用的数据和函数的封装体,也就是大家常说的类。那么类到底是什么呢? 其实,类就是在结构体的基础上发展的产物,结构体只能处理数据,在结构体之上增加对该数据处理的函数,就构成类的概念。类使程序总能提供对数据专门处理函数的安全调用,使得一系列的机能作为一个子系统供安全且重复的使用。
像结构体一样,类在使用之前必须先声明,但是Objective-C并没有像其他面向对象语言那样提供声明类的专用关键字或者语法,而是用编译处理指令来实现,特征是类声明语句都须以@符号开始。
类声明的编译处理指令以@interface开始,以@end结尾,在这之间代码便是类变量的定义和方法的声明。类的声明和定义比其他语言复杂,这会让刚开始学习Objective-C的人非常困惑(准确的说,其他语言如Java只需定义类而不用声明,而Objective-C需要先声明再定义)。
类的定义两部分:接口部分和实现部分,通常分别写在两个文件中。
接口部分(.h):
声明了类名、父类名、实例变量(特征)和方法声明(行为)。以@interface开始,以@end结束
@interface TestCoop : NSObject {
int iMonth;
int iYear;
int iDay;
}
-
(void) setYear: (int) iYear;
-
(void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;
-
(void) setData: (int)Year iMonth:(int)iMonth iDay:(int)iDay;
-
(void) displayDateInfo;
@end
备注: 1、TestCoop:类名 2、NSObject:父类名 3、iMonth iYear iDay :成员变量 4、“- (void) setYear: (int) iYear;”前面的短线/- 表示这是Objective-C方法的声明,用来区分函数原型(C语言中)与(Objective—C中)方法声明的方式。短线后面是方法的返回类型/比如setYear为参数的描述,后面加冒号和参数类型(int)与参数名字iYear,比如:
- (void) setYear: (int) iYear;//单个参数
- (void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;//多个参数
实现部分(.m):
方法的具体实现。以@implementation开始,以@end结束 示例代码:
@implementation TestCoop
-
(void) displayDateInfo{
NSLog(@"Today is: %d.%d.%d\n", iYear, iMonth, iDay);
}
-
(void) setYear: (int) year{
iYear = year;
}
-
(void) primalSetData: (int)year :(int)month :(int)day{
iYear = year;
iMonth = month;
iDay = day;
}
-
(void) setData: (int)year iMonth:(int)month iDay:(int)day{
iYear = year;
iMonth = month;
iDay = day;
}
备注:
-
实现部分的主要作用就定义接口部分的方法实现;
-
使用方法定义后加{},在{}内写具体实现代码;
-
接口部分声明的方法均要实现,否则编译警告;
-
接口部分未声明的新方法也可在实现部分定义;