obj-c編程04:類的繼承

來源:互聯網
上載者:User

標籤:objective-c   繼承   

    這第4篇內容比較少,主要說的是obj-c中的類的繼承,需要說明的是我只是寫了繼承中最簡單的形式,如果全部展開來說,那就多了去了!關鍵是現在肚子裡還沒裝夠墨水,沒法展開啊!

    下面的代碼中,我們寫了2個類:父類A和子類B,然後B中對A中的方法做了重寫。

#import <Foundation/Foundation.h>@interface A:NSObject{int i;}@property int i;-(void)print;@end@implementation A@synthesize i;-(void)print{NSLog(@"[class A][i:%d]:hello!",i);}@end@interface B:A{int j;}@property int j;@end@implementation B@synthesize j;-(void)print{NSLog(@"[class B:A][i:%d,j:%d]hello!",i,j);}@endint main(int argc,char *argv[]){@autoreleasepool{NSLog(@"hello obj-c!");A *a = [[A alloc] init];B *b = [[B alloc] init];a.i = 101;b.i = 1001;b.j = 1002;[a print];[b print];}return 0;}

編譯運行結果如下:

[email protected]: objc_src$clang -fobjc-arc -framework Foundation 1.m -o 1

[email protected]: objc_src$./1

2014-06-29 10:34:30.547 1[1035:507] hello obj-c!

2014-06-29 10:34:30.549 1[1035:507] [class A][i:101]:hello!

2014-06-29 10:34:30.549 1[1035:507] [class B:A][i:1001,j:1002]hello!

好,下面我們稍微修改一下class A中執行個體變數i的定義,使它成為私人,即不在@interface中定義而在@implementation中定義i。這時編譯時間會發現class B中print會報錯:


[email protected]: objc_src$clang -fobjc-arc -framework Foundation 1.m -o 1

1.m:34:41: error: instance variable ‘i‘ is private

                NSLog(@"[class B:A][i:%d,j:%d]hello!",i,j);

改正也很簡單呢,直接 self.i即可,下面是修改後的完整代碼:

#import <Foundation/Foundation.h>@interface A:NSObject@property int i;-(void)set_i:(int)i;-(void)print;@end@implementation A{int i;}@synthesize i;-(void)set_i:(int)i_v{i = i_v;}-(void)print{NSLog(@"[class A][i:%d]:hello!",i);}@end@interface B:A{int j;}@property int j;@end@implementation B@synthesize j;-(void)print{NSLog(@"[class B:A][i:%d,j:%d]hello!",self.i,j);}@endint main(int argc,char *argv[]){@autoreleasepool{NSLog(@"hello obj-c!");A *a = [[A alloc] init];B *b = [[B alloc] init];//a.i = 101;//b.i = 1001;[a set_i:99];[b set_i:199];b.j = 1002;[a print];[b print];}return 0;}



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.