小白學開發(iOS)OC_ 使用繼承來擴充類(2015-08-07)

來源:互聯網
上載者:User

標籤:ios   objective-c   開發   筆記   物件導向   

//

//  main.m

//  使用繼承來擴充類

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//

/*

    當在一個類中有太多的方法會顯得非常複雜,為了清楚表示,我們可以建立類的一個分類(category)來擴充這個類

    在其他物件導向語言中,使用繼承關係類擴充一個類,然而這樣最大的壞處就是耦合性太高

    OC使用(category)來擴充一個類

 

 注意:1. 只要在原類中產生的成員變數(私人變數除外)在分類中都可直接存取

      2. 如果在分類中定義實作類別了與原類同名的方法,那麼原類中的方法相當於被覆蓋掉了(實際開發中,最好不要出現方法覆蓋)

      3. 不能在分類中定義成員變數,只能增加方法

 */

#import <Foundation/Foundation.h>

#import "Person.h"

#import "Person+BlackPerson.h"


int main(int argc,const char * argv[]) {

    @autoreleasepool {

        

       Person *p = [[Personalloc]init];

        [p eat];//這裡調用了eat方法,運行可見是列印“黑人吃東西”,所以方法被覆蓋了

        

    }

   return 0;

}

//

//  Person.h

//  OC的特有文法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Person :NSObject

{

   int _age;

}

@property (nonatomic,assign)int age1;

@property (nonatomic,strong)NSString *name;


//人類的基本方法

- (void)eat;

- (void)drink;

- (void)smile;


@end

//

//  Person.m

//  OC的特有文法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//


#import "Person.h"


@implementation Person


- (void)eat

{

    NSLog(@"人類吃東西");

}

- (void)drink

{

    NSLog(@"人類喝東西");

}

- (void)smile

{

   NSLog(@"人類微笑");

}


@end


//

//  Person+BlackPerson.h

//  OC的特有文法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//


#import "Person.h"


@interface Person (BlackPerson)


- (void)popping;

- (void)eat1;   //  這裡 覆蓋了Person類中的eat方法


@end


//

//  Person+BlackPerson.m

//  OC的特有文法

//

//  Created by admin on 15/8/12.

//  Copyright (c) 2015年 admin. All rights reserved.

//


#import "Person+BlackPerson.h"


@implementation Person (BlackPerson)


- (void)popping

{

    [selfeat];

    _age =50;  // 分類中可以直接調用原類中的成員變數

    NSLog(@"黑人很會跳舞");

}


- (void)eat1

{

    NSLog(@"黑人吃東西");

}




@end




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

小白學開發(iOS)OC_ 使用繼承來擴充類(2015-08-07)

聯繫我們

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