一般涉及到面向对象都会C#,Java都不可避免的涉及到类,C#中类的后缀名是.cs,Java中是.java,Object-C中一般用两个文件描述一个类,后缀名为.h为类的声明文件,用于声明成员变量和方法,.m文件主要用于实现声明中的方法,Java和C#声明类用的是Class关键字,OC声明类用的字@interface和@end,实现类用的是@implementation和@end,跟其他的有点不同,方法定义,方法调用都不太一样,具体一点点的看吧:
新建Cocoa Class:
语言选择OC,类名Book:
Book.h中的代码:
1
2
3
4
5
6
7
8
9
10
11
|
#import <Foundation/Foundation.h>
@interface Book : NSObject
{
NSString *_author;
NSString *_publishDate;
}
@property int Number;
- ( void )getDetial;
@end
|
Book.m中的代码:
1
2
3
4
5
6
7
8
9
|
#import "Book.h"
@implementation Book
@synthesize Number;
-( void )getDetial
{
NSLog (@ "论程序员的职业素养" );
}
@end
|
main函数中的调用:
1
2
3
4
|
Book *book=[Book new ];
[book getDetial];
book.Number=100;
NSLog (@ "图书的数量为:%d" ,book.Number);
|
这里的代码暂时先不分析,看下另外一段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
typedef enum {
man,
woman
} Sex;
@interface Person : NSObject
{
@public
NSString *Name;
NSString *School;
Sex sex;
int Age;
}
- ( void )say;
- ( int )sum:( int )numA secondNumber:( int )numB;
@end
@implementation Person
- ( void )say
{
NSLog (@ "多说多错,少说少错" );
}
-( int )sum:( int )numA secondNumber:( int )numB
{
return numA+numB;
}
@end
|
main函数中的调用,具体代码如下:
1
2
3
4
5
6
7
8
9
|
Person *person=[Person new ];
person->Age=25;
person->sex=man;
NSLog (@ "年龄:%d,性别为:%@" ,person->Age,@ "测试" );
[person say];
int b=[person sum:10 secondNumber:10];
NSLog (@ "两个数字相加的和是:%d" ,b);
|
类中的成员变量都是在{}中的,如果初始化类的时候想要调用的话直接使用->符号进行访问,前提是变量的作用域可以访问,一般来说作用范围是@public,@protected,@private,如果接触过其他语言,public都可以访问,protected是父类和子类都可以访问,private是类本身中才可以访问。
C#通过操作属性来保护字段,OC中也可以,所以第一段代码就出现了@property和@synthesize;
方法定义+表示类方法也就是静态方法,-是对象方法:
1
|
-( int )sum:( int )numA secondNumber:( int )numB
|
int 是返回值类型,方法后面跟一个函数就是:(类型)名称,如果是多个就空格之后重复,跟上面一样,很好理解;new其他语言中用的很多,不过一般新建一个对象的形式是:
1
|
Person *person=[[Person alloc] init];
|
行笔匆匆,难免遗漏,如有不当,多多指教,先行谢过~
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4214945.html,如需转载请自行联系原作者
请发表评论