《C#妹妹和Objective-C阿姨對話錄》(02)這就是類--阿姨的狗狗

來源:互聯網
上載者:User
C#妹妹:阿姨,今天這麼早就出來遛狗了??

Objective-C阿姨:是啊,我的狗老了,有點失眠,起的是早點...你看看,這個狗狗特聰明特聽話
//*********  檔案Dog.h  ***************#import <Foundation/Foundation.h>typedef enum{    kBlackColor,    kYellowColor,    kWhiteColor} Color;
@interface Dog : NSObject {    Color Color;    int Age;}-(void) Sound;-(void) Eat:(NSString  *) food  EatQty:(int) count;@end//Dog
-

////*********  檔案Dog.m  ***************#import "Dog.h"@implementation Dog-(void) Sound{    NSLog(@"汪汪!");}-(void) Eat:(NSString  *) food  EatQty:(int) count{    NSLog(@"吃%d斤%@",count,food);}@end//Dog
C#妹妹:哇塞,雙胞胎狗狗耶....
Objective-C阿姨:啥眼神兒啊。。。,是一隻狗狗分成兩個檔案而已。。你不知道C語言有標頭檔嗎?C#妹妹:。。。仔細看看還是看得懂得。有方法,有變數。。。還有這個Dog類繼承自NSObject。Objective-C阿姨:你說的沒錯,  。每個類由兩部分組成,介面(@interface開頭 @end結尾)和實現(@implementation

開頭 @end結尾),同樣叫介面(interface),但是跟你的介面意思完全不同,這裡介面的意思是告訴編譯器這個類提供那些資料成員(執行個體變數)和方法。我這裡跟.NET的“介面(interface)”類似的概念是“協議(protocol)”,類似的事情還有很多,見到一樣的關鍵字不要想當然就好了。。 C#妹妹:恩,我基本上明白了,但是這裡還有點疑問。
-(void) Eat:(NSString  *) food  EatQty:(int) count{    NSLog(@"吃%d斤%@",count,food);}
如果我寫這段代碼應該是這個樣子,差別蠻大的
public void Eat(String food, int eatQty){      Console.WriteLine("吃{1:0}斤{0}", food, eatQty); }
Objective-C阿姨:是的,最大的區別應該在方法的參數上。我的方法是很有特色的, 方法的名稱和參數是合在一起的,比如調用我的方法需要這樣操作
Dog *d=[Dog new];[d Sound];[d Eat:@"骨頭" EatQty:3];
如果是C#的話應該是這樣調用的
Dog a = new Dog();a.Sound();a.Eat("骨頭", 5);
看到區別了嗎?如果參數很多的話,通過My Code可以很容易分辨每個參數的意思 C#妹妹:恩,果然很方便(心裡想:真囉嗦,還是智能感知方便啊。。。),另外怎麼每個語句都用中括弧擴起來啊? Objective-C阿姨:是的,在我這裡通知對象執行某種方法稱為“發送訊息”,[d Sound]表示向d對象發送Sound訊息,其實就是調用執行個體方法了。你知道My Code副檔名為啥是m嗎?因為是message的縮寫。 C#妹妹:方法前面的“-”表示什麼意思?可以有“+”號嗎? Objective-C阿姨:“+”和“-”都有的, “-”表示執行個體方法,“+”表示類的方法,也就是你的靜態方法。 C#妹妹:你沒有存取修飾詞嗎? Objective-C阿姨:我可以用成@public、@protected、@private 作為存取修飾詞,修飾執行個體變數(成員變數),預設是@protected。但也只有成員變數有存取修飾詞,類變數、類方法、成員方法是沒有存取修飾詞的,所有的方法都是公有的, 所有的類變數都是私人的。
C#妹妹:這就明白了,真是Objective-C雖老,五髒俱全啊!!! Objective-C阿姨: C#妹妹:來狗狗,吃點東西。。。。。
    [d Sound];    [d Eat:@"骨頭" EatQty:1];
狗狗:
C#妹妹:,再喂點肉肉。。。。。
    [d Sound];    [d Eat:@"肉" EatQty:2];
狗狗: C#妹妹:,嘿嘿,都說狗改不了吃屎,來點猛的吧。。。。。。。。
    [d Eat:@"大便!!!!!!" EatQty:999];
狗狗:。。。。。。。。。。。 C#妹妹:Objective-C阿姨,你的狗狗果然很乖呀。。。88

各位同學,本人學習Objective-C時間很短,學習Objective-C其實不是為了Mac、iPhone開發,並沒有實用,
其實是一個C#使用者學習Objective-C的學習筆記,學習的確切目的是協助我理解C#,畢竟沒有比較是不可能知道所謂C#的特點的
請大家批判的眼光看這個東西,如果發現和其他文章、書籍、評論、資料有衝突,請盡量以其他文章為準。並給我留言
也邀請所有高手積極拍磚,我正好用來蓋房子~~~
《C#妹妹和Objective-C阿姨對話錄》

(01)認識Objective-C--初次見面的問候 
(02)這就是類--阿姨的狗狗 
(03)NSString--再遇狗狗
(04)記憶體回收基礎--拆遷隊那點事

        待續⋯⋯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.