標籤:
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語言類