iOS學習第一天(Objective-C語言的類/繼承)

來源:互聯網
上載者:User

標籤:

在學習完c語言之後,今天開始了對OC語言的學習,今天主要學習的是對OC中的類進行說明和繼承。

1、類的定義和使用

在檔案夾上右擊,選擇New File...-Cocoa Class-輸入類的名稱-Creat。即可建立一個類。注意,選擇要繼承的類為NSObject

首先在所建立的.h檔案中進行對類的聲明部分,之後在.m檔案中進行對類的實現部分。

對類聲明部分的文法:

@interface 類的名字:父類的名字

{

  類的資料的定義

}

@end 

 

對類的實現部分的文法:

@implementation 類的名字

行為的實現

@end

 

如我們求1~100之和的函數中,.h檔案中對類進行聲明:

 

#import <Foundation/Foundation.h>

@interface LYSum : NSObject

{

    int n;

}

-(void)setN:(int)_n;

-(int)sum;

@end

 

.m檔案中對類實現的部分:

#import "LYSum.h"

@implementation LYSum

-(void)setN:(int)_n

{

    n = _n;

}

 

-(int)sum

{

    int s=0;

    for(int i=0;i<=n;i++)

    {

        s+=i;

    }

    return s;

}

@end

 最後在main.m檔案中對類的行為進行實現,main.m檔案中的代碼:

#import <Foundation/Foundation.h>

#import "LYSum.h"

 

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

    @autoreleasepool {

        LYSum * sum = [[LYSum alloc]init];//注意這裡的固定用法

        [sum setN:100];

        int s = [sum sum];

        NSLog(@"%d",s);

        }

    return 0;

}

 

2、類的繼承和init函數

在作圖函數中LYShape.h檔案對類進行的定義:

#import <Foundation/Foundation.h>

@interface LYShape : NSObject  //對NSObject進行繼承

{

    int width;

    int height;

}

-(id)initWithWidth:(int)_width andWithHeight:(int)_height;  //定義一個新函數,使width和height能夠在一個函數中出現

-(int)area;

@end

 

在LYShape.m檔案中對兩個函數進行說明部分:

#import "LYShape.h"

@implementation LYShape

- (id)init  //重寫父類裡的init

{

    self = [super init];

    if (self) {

        width = 0;

        height = 0;

    }

    return self;

}

-(id)initWithWidth:(int)_width andWithHeight:(int)_height  //初始化行為

{

    //必須去調用父類的初始化行為

    self = [super init];

    if(self)  //如果父類初始化成功

    {

            //初始化自己的資料

        width = _width;

        height = _height;

    }

    return self;

}

-(int)area

{

    return width*height;

}

@end

 

之後,LYCircle對LYShape進行繼承,LYCircle.h中的代碼:

#import "LYShape.h"

@interface LYCircle : LYShape  //對LYShape進行繼承

-(id)initWithRad:(int)_rad;

-(double)area;

@end

 

LYCircle.m中的代碼:

#import "LYCircle.h"

@implementation LYCircle

-(id)initWithRad:(int)_rad

{

    self = [super initWithWidth:_rad andWithHeight:_rad];  //使用super代表調用父類的函數

    return self;

}

 

-(double)area

{

    return 3.14*[super area];  //同理,需要調用父類函數來計算圓的面積

}

@end

 

最終,main.m中的代碼:

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

    @autoreleasepool {

          //圖形

        LYShape * s =[[LYShape alloc]initWithWidth:10 andWithHeight:20];

        NSLog(@"%d",[s area]);

      //圓形

        LYCircle * circle = [[LYCircle alloc]initWithRad:10];

        NSLog(@"%g",[circle area]);  //%g可以輸出一個整數

   }

    return 0;

}

 

 第一天學習到的東西並不是很多,但是我們對於這個語言有了一個整體的認識,可以很快完成從C到OC的轉換。

iOS學習第一天(Objective-C語言的類/繼承)

聯繫我們

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