Objective-c物件導向基礎,objective-c物件導向
目前移動開發熱火朝天,今天在家學習最近入手的《Objective-c基礎教程》,初步感覺Objective-c與.Net差別很大,為了更好的學習理解Objective-c,將以筆記的形式記錄學習的知識點,方便查閱。
在Objective-c中類分為兩部分:聲明和實現,聲明使用關鍵字@interface,實現使用關鍵詞@implementation,@符號可以理解為是對C語言的擴充,在.Net中則是使用Class關鍵字,如下所示:
#import <Foundation/Foundation.h>@interface Person : NSObject{ @private NSString* firstName; NSString* lastName;}
//getter- (NSString*) firstName;- (NSString*) lastName;
//setter- (void) setFirstName : (NSString*) fName;- (void) setLastName : (NSString*) lName;- (NSString*) description;+ (NSString*) breath;@end@implementation Person-(NSString*) firstName{ return firstName;}-(NSString*) lastName{ return lastName;}-(void) setFirstName:(NSString *)fName{ self->firstName = fName;}-(void) setLastName:(NSString *)lName{ self->lastName = lName;}-(NSString*) description{ return [[self->firstName stringByAppendingString:@" " ] stringByAppendingString:self->lastName];}+(NSString*) breath{ return @"air";}@end
觀察代碼得出以下結論:
0. #import引入標頭檔,該命令可以保證標頭檔只被包含一次,無論此命令在檔案中出現多少次,c語言使用#include命令。
1. 每個方法前面都有一個"+" 或者 "-"符號,+表示該方法為類方法由類調用,-表示該方法為執行個體方法由執行個體調用。
2. self關鍵字表引用執行個體對象自身,與.NET中的this關鍵字功能相似。
3. NSObject是Objective-c中基類,自訂類建議繼承NSObject,Objective-C不支援多繼承,但是可以通過category(類別) 和 protocol(協議)實現多繼承的效果
4. description方法繼承與NSObject,在Person中被重寫,在Objective-c中如果直接使用執行個體對象,預設調用description方法,相當於.NET中的ToString。
5. 在Objective-c中方法調用在一對方括弧之間,形式如:[ instance method : parameter parameter ......]。
6. super用於調用超類中的實現方式,被用於作為調用目標。
NSLog輸出格式符說明:
| %d |
輸出整形數字 |
| %@ |
輸出對象,預設調用對象的description方法 |
| \n |
換行 |
對Person類的測試代碼如下所示:
int main(int argc, const char * argv[]) { Person* person = [Person new]; [person setFirstName:@"xiao"]; [person setLastName:@"ming"]; NSLog(@"first name: %@",[person firstName]); NSLog(@"last name: %@",[person lastName]); NSLog(@"full name: %@",person);//預設調用description方法 return 0;}
程式輸出如下:
以上就是開始學習Objective-C的初步理解,如有不正確的地方,請指出。