程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [Objective-C]OC中對象創建,self,super的詳解

[Objective-C]OC中對象創建,self,super的詳解

編輯:關於C語言

1:self是類的隱藏的參數,指向當前調用方法的類,另一個隱藏參數是_cmd,代表當前類方法的selector。

2:super並不是隱藏的參數,它只是一個"編譯器指示符",它和self指向的是相同的消息接受者

3:當使用self調用方法時,會從當前類的方法列表中開始尋找,如果沒有,就從父類中再找,而使用super時,則從父類的方法列表中開始找,然後調用父類的這個方法

 

具體看代碼實現方法(詳細看代碼中的注釋)

一:看PersonSelf.h聲明文件

 

//
//  PersonSelf.h
//  PersonSelf
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import 
@class Student;  //@class一般用在頭文件中
@interface PersonSelf : NSObject
{
    
    //聲明兩個實例變量
    int age;
    NSString * name;
    Student *s;
}

//定義方法
-(NSString *) getName;
-(void) setName:(NSString *)_name;
-(int) getAge;
-(void)setAge:(int)_age;
@end
二:PersonSelf.m實現文件

 

 

//
//  PersonSelf.m
//  PersonSelf
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import "PersonSelf.h"
#import "Student.h" //#import一般使用在實現文件中
@implementation PersonSelf
-(id)init{
    if(self=[super init]){  //super可以調用父類中的方法
        s=[[Student alloc]init];
        NSLog(@"student:%@\n",s);
    }
    return  self;
}
-(NSString *) getName{
    return  name;
}
-(void) setName:(NSString *)_name{
    name=_name;
    [self setAge:14];//self可以去調用本類對象中的方法
    NSLog(@"setAge");
    NSLog(@"self class is: %@\n",[self class]);
    NSLog(@"super class is: %@\n",[super superclass]);
    
}
-(int) getAge{
    return  age;
}
-(void)setAge:(int)_age{
    age=_age;
}
@end

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved