标签:
1.Objective-C是C语言的超集,完全兼容C语言
2.所有的关键字都以“@”开头,例如:@interface,@class,@implementation
3.Objective-C的所有对象必须继承于NSObject,并且不存在多继承
4.Objective-C支持协议,支持多态
5.Id类型 类似泛型对象,void* 类似任意的指针类型
“-”表示对象方法
“+”表示类的方法
◆ .h文件:存放类和声明方法
声明使用 @interface 开头 @end 结尾
#import <Foundation/Foundation.h> //必须导入Foundation,Foundation框架是支持OC所有数据结构的框架 @interface Person : NSObject //@interface 类名:继承的类(含义:Person类 继承于NSObject类) { //在”{}“之间存放成员变量字段 @public //public表示公有,自己和外部成员都可以访问 int age; @private //private表示私有,只有自己内部可以访问 float height; @protected NSString *name; //protected表示保护,只有自己以及子类可以访问 //“*”可以理解为是oc的一个标识符,凡是继承于NSObject的对象都必须加上“*“来修饰 } //”{}“和”@end“之间存放方法,类的方法以及对象的方法
//所有方法名以init开头的方法,一般都为构造方法。构造方法即是初始化对象。 - (id) init; - (id) initWithAge: (int)newAge; - (id) initWithAge: (int)newAge AndHeight: (float)newHeight;
//id表示任何一个继承于NSObject的对象,也可以用(Person *)来构造方法,但是使用(id)更为简便 //set方法 - (void) setAge: (int)newAge; - (void) setHeight: (float)newHeight; - (void) setAge:(int)newAge AndHeight: (float)newHeight; //get方法 - (int) getAge; - (float) getHeight; - (NSString *) getName;
@end
◆ .m文件:存放类的实现
实现以@implementation 开头 @end 结尾
@implementation Person //在两个“@”直接去实现方法,如构造方法(init),get方法,set方法 { //可以在这里写成员变量,但是默认为private,只有在Person.m的文件中实现的方法才能调用。 } //在“{}”和“@end”之间所写的实现方法,同样也是默认为private,只能在Person.m的文件中调用。 //这是OC中特有的构造方式的写法,所有的格式都是如此。 - (id) init{ if (self = [super init]) { // super 表示父类,super init 表示父类调用了自己的init方法。 // init方法 -> 第一步:分配内存 第二步:内存空间指向self //self 表示对象本身 age = 20; height = 180.0; name = @"jerry"; } return self; } // set方法 - (void) setAge:(int)newAge { age = newAge; } // get方法 - (int) getAge{ return age; } @end
#import <Foundation/Foundation.h>
#import "Person.h"//用import导入Person.h文件 int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[Person alloc] init]; //alloc表示分配内存, init表示构造方法。 //在调用init构造方法后,可以得到一个self指针,并返回而 p,即p得到了对象 NSLog(@"name is-%@",p->name); //这种调用存在安全隐患,并且只有当name为public的时候才能调用 NSLog(@"name is-%@",[p getName]); //调用get方法得到值 [p setAge:100]; //调用set方法,重设age的值 } return 0; }
例子:人用电脑玩游戏。
1:需要两个类,人和电脑。
2:人:玩游戏
3:电脑:开机 加载游戏 关机
整个过程就是:人调用电脑去实现开机 加载游戏 关机。人站在管理者的角度,去指挥电脑。
Person.h
定义调用电脑玩游戏的这个方法
#import <Foundation/Foundation.h> #import "Computer.h"//导入电脑的.h文件 @interface Person : NSObject - (void) playGameWith: (Computer *)computer;//调用电脑这个类
// - (void)方法名:(调用的类*)对象名称;
@end
Person.m
实现调用电脑玩游戏的这个方法
#import "Person.h" @implementation Person - (void) playGameWith:(Computer *)computer { [computer start]; [computer LoadGame]; [computer shutdown]; } @end
Computer.h
定义开机 加载游戏 关机 这三个方法
#import <Foundation/Foundation.h> @interface Computer : NSObject - (void) start; - (void) shutdown; - (void) LoadGame; @end
Computer.m
实现开机 加载游戏 关机 这三个方法
#import "Computer.h" @implementation Computer - (void) start { NSLog(@"computer startup "); } - (void) LoadGame { NSLog(@"Load over"); } - (void) shutdown { NSLog(@"computer off"); } @end
运行main.m
#import <Foundation/Foundation.h> #import "Person.h" //导入人的.h文件 #import "Computer.h" //导入电脑的.h文件 int main(int argc, const char * argv[]) { @autoreleasepool { Person *A = [[Person alloc]init]; Computer *computer = [[Computer alloc]init]; [A playGameWith:computer]; } return 0; }
标签:
原文地址:http://www.cnblogs.com/LeoMabi/p/5095577.html