溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

object-c中的繼承

發布時間:2020-07-09 07:30:13 來源:網絡 閱讀:580 作者:Mr_Dai 欄目:開發技術

在面向對象的語言中都會由繼承這種語法,而繼承我們通常使用is a 來確定繼承的關系,在objcet-c中繼承是使用冒號來確定繼承的,從下面的例子來了解繼承:

1.創建一個studet的對象

------聲明

#import <Foundation/Foundation.h>

//我們創建的類必須繼承了NSobject對象

@interface student : NSObject{

int _age;

}

-(void)setAge:(int) newAge;

-(int) age;

@end


#import "student.h"


-----實現方法

@implementation student

-(void)setAge:(int)newAge{

_age =newAge;

}

-(int)age{

return_age;

}

@end

2.創建一個叫小明的學生繼承了student

---聲明

#import <Foundation/Foundation.h>

#import "student.h"

//@class student --------------------這里不能使用@class關鍵字來引用

@interface liming : student

{

NSString *name;

}

//子類特有的方法

-(void)speak;

-(void) setName:(NSString *)newName;

-(NSString *) name;

@end

------實現


#import "liming.h"

@implementation liming

-(void)setName:(NSString *)newName{

name = newName;

}

-(NSString *)name{

returnname;

}

- (NSString *)description

{

return [NSStringstringWithFormat:@"my name is %@", name];

}

-(void)speak{

NSLog(@"hello my age is %i",self.age);

}

@end


-----mian方法


#import <Foundation/Foundation.h>

#import "student.h"

#import "liming.h"

int main(int argc, constchar * argv[])

{

@autoreleasepool {

liming *lim =  [[limingalloc]init];

       lim.age = 23;

       lim.name =@"小明";

//%@是調用OC中的descrition方法,我們在liming類中重寫了description方法

NSLog(@"%@",lim);


   }


//創建子類使用父類進行接受

student *ss = [[limingalloc]init];

ss.age=22;

//        //使用父類進行接收對象依然是可以進行調用子類中的方法,但是Xcode會報警告,Student中沒有這個方法。

 [ss speak];

return0;

}


OC中繼承:

1.在OC中繼承是單繼承的。liming類繼承了student類,就不能繼承其他類。
2.在OC中使用的繼承的時候我們不能使用關鍵字@class來進行包含繼承的類,只能使用@Import來包含我們的繼承類,因為我們的如果要繼承一個類要知道該類中有什么的方法,因此我們不能使用@class來進行包含我們的類。
3.在OC中創建一個子類可以使用父類來進行接收,但是在調用子類的方法的時候,系統是可以進行調用,但是Xcode會報警告但是程序可以運行,不建議使用父類來接受子類。至于為什么可以執行成功可以通過繼承的機制來解答。

4.在繼承的機制中,對于方法的調用是從子類開始找方法,如果找到方法就會執行子類中的方法,如果沒有找到就會到父類中進行查找。再調用父類中的方法。在繼承的關系中變量的使用,是從父類開始找。



@class關鍵會在另外個博文說明。


向AI問一下細節
推薦閱讀:
  1. Object-C關聯
  2. js中的繼承

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女