介紹Objective-C類和類對象,方法的簡單使用。1、類和方法
中是一段的類聲明的文法展示,聲明了一個叫做 MyClass 的類,它繼承於根類:NSObject。(根類可以被所有的其他類直接或間接繼承。)
是一個方法的文法展示,方法的聲明由以下幾個部分構成:方法類型標識符,傳回型別,一個或多個方法簽名關鍵字,以及參數類型和名稱。
類的實體變數的存取權限:
對應的代碼:
@interface Worker : NSObject{ char *name;@private int age; char *evaluation;@protected id job; float wage;@public id boss;}
沒有寫關鍵字的實體變數,比如 char *name是@protected的。也就是說,預設是protected的。
2、建立類1、類和方法2、建立類1.1、建立項目,按Command + N 建立檔案,建立類Student ,繼承與NSObject1.2、產生student.h 和student.m
#import <Foundation/Foundation.h>@interface Student : NSObject@end
#import "Student.h"@implementation Student@end
1.3、在標頭檔裡添加類成員變數和方法
#import <Foundation/Foundation.h>@interface Student : NSObject{ NSString *studentName; NSInteger studentAge;}-(void) printInfo;-(void) setStudentName: (NSString*) name;-(void) setAge: (NSInteger) age;-(NSString*) getStudentName;-(NSInteger) GetAge;@end
- @interface 類的開始的標識符號 ,好比Java 或 C 語言中的Class
- @end 類的結束符號
- 繼承類的方式:Class:Parent,如上代碼Student:NSObject
- 成員變數在@interface Class: Parent { .... }之間
- 成員變數預設的存取權限是protected。
- 類成員方法在成員變數後面,格式是:: scope (returnType) methodName: (parameter1Type) parameter1Name;
- scope指得是類方法或執行個體化方法。類方法用+號開始,執行個體化方法用 -號開始。
1.4、實作類別中的方法
@implementation
#import "Student.h"@implementation Student-(void) printInfo{ NSLog(@"姓名:%@ 年齡:%d歲",studentName,studentAge);}-(void) setStudentName: (NSString*) name{ studentName = name;}-(void) setAge: (NSInteger) age{ studentAge = age;}-(NSString*) getStudentName{ return studentName;}-(NSInteger) GetAge{ return studentAge;}@end
1.5、在建立類對象,調用方法。
Student *student = [[Student alloc]init]; [student setStudentName:@"張三"]; [student setAge:10]; [student printInfo];
- Sutdent *student = [[Sutdent alloc] init]; 這行代碼含有幾個重要含義
- [Student alloc]調用Student的類方法,這類似於分配記憶體,
- [object init]是構成函數調用,初始類對象的成員變數。
列印結果:
姓名:張三 年齡:10歲
2、類的執行個體方法使用多個參數
....-(void) setNameAndAge:(NSString*) name setAge:(NSInteger) age;....
....-(void) setNameAndAge:(NSString*) name setAge:(NSInteger) age{ studentName = name; studentAge = age;}....
Student *student = [[Student alloc]init]; [student setNameAndAge:@"李四" setAge:20]; [student printInfo]; [student release];
3、自訂建構函式3.1聲明和實現建構函式
....-(Student*) initWithNameAndAge:(NSString*) name setAge:(NSInteger) age;....
....-(Student*) initWithNameAndAge:(NSString*) name setAge:(NSInteger) age{ self = [super init]; if ( self ) { [self setNameAndAge:name setAge:age]; } return self;}....
-(id)init 這個方法用於類的初始化建立,每一個類在建立的時候需要調用init方法,使用父類的init 方法得到了self,這就可以做一些子類初始化的工作
3.2使用自訂建構函式:
Student *student = [[Student alloc]initWithNameAndAge:@"rongfzh" setAge:6];
[student printInfo];
[student release];
[student release];