Objective-C文法之類和對象

來源:互聯網
上載者:User
介紹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];

 

 

相關文章

聯繫我們

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