【Objective-C】02.第一個OC語言類

來源:互聯網
上載者:User

標籤:

02.第一個OC語言類

在java語言中,建立一個類只需要一個檔案,而在oc語言中,建立一個類需要兩個檔案.m檔案和.h檔案。

.h檔案是聲明類,用來聲明成員變數和方法。用關鍵詞@interface來修飾,以@end結尾。

.m檔案是實作類別,用來實現成員變數和方法,用關鍵詞@implementation來修飾,以@end結尾。

方法:在oc語言中方法都需要用+或-來表明方法的類型。

+表示的是靜態方法。

-表示的是動態方法。

.h檔案中的所有方法都是public,不能更改。

成員變數:成員變數按範圍不同可以劃分為:public   protected   private

所有的類最後都會繼承NSobject.

 

Student.h檔案

#Import <foundation/foundation.h>    //該student類繼承NSobject類,因此需要引用foundation架構下的foundation.h檔案。

@interface student :NSobject {        //聲明student類然後繼承自NSobject類。將成員變數放在{}當中

Int age;                                         //一般會將成員變數的聲明放在標頭檔當中,age的

Int height;

 

@public                                       //聲明不同類型的成員變數

Int weight;

}

@end

 

Student.m檔案

#import“student.h”                           //必須引用該類的標頭檔,否則無法實現聲明,就假設標頭檔是名字,工程檔案是身體,沒有名字就沒有身體。

@implementation student{                 //實現student類

 

}

@end

 

添加方法

為了保持物件導向的封裝性,在java語言中,get方法和set方法都要用到getname和setname。在oc中,get方法需要用到與原名字同名的方法,例如age方法可以用age函數來擷取age變數。

#import <foundation/foundation.h>

@interface student:NSobject{

Int age;

Int height;

}                                                                                           //{}起始終止與成員變數

-(int)age;                                                                         //age的get方法,傳回值類型用(int)表示

-(void)setage:(int)Newage;                                                 //無傳回值,參數用:引出(int)為參數資料類型,形參名稱為newage.傳回值或者參數的類型都要用()包住。

- (void)setage:(int)Newage andheight(int)Newheight;            //在oc中一個:對應一個參數,而且:也是方法名的一部分,因此方法名是setage:

-(void)setage:(int)Newage andheight:(int)height;            // 增加一個方法可以同時操作age和height

 //方法名是setage:andheight:動態方法,無傳回值,有兩個參數,andheight可以省略。方法名可以是(void)setage:(int)Newage:(int)height;

 

在student.m中的實現方法

#import “student.h”

@implementation student

 

-(int)age{

 Return age;

}

 

-(void)setage:(int)newAge{

 Age=newAge;

}

 

@end

Student.h和student.m都有了,這個student類就完成了,接下來就要用student類來建立一個執行個體。

 

@Import <foundation/foundation.h>

@import student.h

 

int main(int argc, const char * argv[]){                 //在oc語言中,所有的Object Storage Service類型都是指標,即開闢一塊記憶體空間,然後存入相應的類型資料,然後用指標指向。

@autoreleasepool{

   Student *stu=[[student alloc]init];                   //在oc語言中,[調用方法的主體 方法名]就可以調用方法了。在oc中建立對象,首先需要要用建立對象的類開闢一塊記憶體空間,然後對類進行初始化,這樣對象才可以使用。

  [stu release];//對象銷毀

}

Return 0;

}

Student stu=[student alloc];                             //用student類型開闢了一段記憶體空間,並建立stu指標來指向這片記憶體空間。剛建立的記憶體空間沒有經過初始化時無法使用的,必須初始化之後才能使用。

Stu=[Stu init];                                              //將stu指標指向的那片記憶體空間初始化,並將初始化後的stu地址返回給指標。靜態變數可以由類來調用。動態變數可以用對象來調用。

因此在oc語言中調用方法實際上需要【調用方法主體 方法名】

銷毀對象,在方法調用結束之後,需要手動銷毀對象。

前面的stu調用了alloc和init等一些其他的方法,這些方法並不是因為調用了foundation.h檔案,而是因為student的父類是NSobject,所以可以調用這些方法。

 

在創立了student類的stu對象,如何調用這些方法和成員變數。

 1 import <Foundation/Foundation.h>

 2 #import "Student.h"

 3

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

 5 {

 6     @autoreleasepool {

 7         Student *stu = [[Student alloc] init];

Stu->age=18; //只有成員變數是public的可以用指標的形式直接存取。

[Stu setage:18];//受保護的成員變數可以通過set方法來調用。

Int newage=[stu->age];

Int newage=[stu age];

【Objective-C】02.第一個OC語言類

相關文章

聯繫我們

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