Object-C入門,建立一個Person工程,給新手用
阿新 • • 發佈:2019-01-03
OC語言的基本特點:
(1)OC語言是C語言的一個超集,只是在C的基礎之上加上了面對物件(oo)的特性;
(2)OC與Java語言相同都是單繼承,這一點與C++語言不同(多重繼承);
(3)OC不支援名稱空間機制,取而代之的是在類名之前新增字首,以此來區分。
建立一個Person工程
main.m
Person.h#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { /*____________________建立person物件______________________*/ //在OC裡面物件使用指標宣告的 //alloc在記憶體中申請一塊記憶體,用來儲存此物件的資訊 // Person *person = [Person alloc]; //呼叫init方法初始化一些預設的資料 // person = [person init]; //以上兩步就建立好了一個物件 //等價與下面的這句 Person *person = [[Person alloc] init]; //new建立物件,不推薦 // Person *person1 = [Person new]; /*________________________OC方法的呼叫__________________________*/ // [物件/類 方法名]; //類方法的呼叫 [Person testClass]; //例項方法的呼叫 //不帶引數的方法的呼叫 [person shopping]; //帶一個引數的方法的呼叫 [person shopping:3000]; //帶兩個引數的方法的呼叫 [person shopping:400 withPlace:@"大物美"]; NSInteger a = [person shoppingPrice]; NSLog(@"a:%ld",a); return 0; }
Person.m#import <Foundation/Foundation.h> //:後面的就是當前類的父類,NSObject是一切類的根類 @interface Person : NSObject { //在{}之間定義屬性 //屬性、全域性變數、例項變數、成員變數 NSInteger age; //年齡 NSString *name; //名字 BOOL sex; //性別 //注意:在OC裡面不能在定義屬性的時候對屬性賦值 // float height = 1.70; //身高 } /*--------------------設定類的方法---------------------*/ //C語言定義函式 //函式返回值型別 函式名 (形參列表); //int getSum(int a, int b); //OC中方法的定義 //方法的型別 (方法的返回值型別)方法名 引數 /*--------------------設定類的方法(例項方法)---------------------*/ //例項方法 //方法名: shopping - (void)shopping; //購物的方法,不帶引數 //方法名: shopping:(注意:“:”是方法名的一部分) - (void)shopping:(float)price; //帶一個引數的 //方法名: shopping: withPlace: - (void)shopping:(float)price withPlace:(NSString *)place; //帶兩個引數 //返回型別為整型 - (NSInteger)shoppingPrice; /*--------------------設定類的方法(累方法)---------------------*/ + (void)testClass; @end
#import "Person.h" @implementation Person //不帶引數的方法 - (void)shopping { //在例項方法類裡面可以用檔期類的屬性 // NSLog(@"%@",name); NSLog(@"購物了"); } //帶一個引數的方法 - (void)shopping:(float)price { NSLog(@"購物消費了%f元",price); } //帶兩個引數的方法 - (void)shopping:(float)price withPlace:(NSString *)place { NSLog(@"在%@購物消費了%f元",place,price); } - (NSInteger)shoppingPrice { NSInteger price = 100; return price; } //類方法 + (void)testClass { //在類方法中無法訪問屬性 // NSLog(@"%@",name); NSLog(@"這是一個類方法"); } @end