您好,登錄后才能下訂單哦!
在面向?qū)ο蟮恼Z言中都會(huì)由繼承這種語法,而繼承我們通常使用is a 來確定繼承的關(guān)系,在objcet-c中繼承是使用冒號(hào)來確定繼承的,從下面的例子來了解繼承:
1.創(chuàng)建一個(gè)studet的對(duì)象
------聲明
#import <Foundation/Foundation.h>
//我們創(chuàng)建的類必須繼承了NSobject對(duì)象
@interface student : NSObject{
int _age;
}
-(void)setAge:(int) newAge;
-(int) age;
@end
#import "student.h"
-----實(shí)現(xiàn)方法
@implementation student
-(void)setAge:(int)newAge{
_age =newAge;
}
-(int)age{
return_age;
}
@end
2.創(chuàng)建一個(gè)叫小明的學(xué)生繼承了student
---聲明
#import <Foundation/Foundation.h>
#import "student.h"
//@class student --------------------這里不能使用@class關(guān)鍵字來引用
@interface liming : student
{
NSString *name;
}
//子類特有的方法
-(void)speak;
-(void) setName:(NSString *)newName;
-(NSString *) name;
@end
------實(shí)現(xiàn)
#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 =@"小明";
//%@是調(diào)用OC中的descrition方法,我們?cè)趌iming類中重寫了description方法
NSLog(@"%@",lim);
}
//創(chuàng)建子類使用父類進(jìn)行接受
student *ss = [[limingalloc]init];
ss.age=22;
// //使用父類進(jìn)行接收對(duì)象依然是可以進(jìn)行調(diào)用子類中的方法,但是Xcode會(huì)報(bào)警告,Student中沒有這個(gè)方法。
[ss speak];
return0;
}
OC中繼承:
4.在繼承的機(jī)制中,對(duì)于方法的調(diào)用是從子類開始找方法,如果找到方法就會(huì)執(zhí)行子類中的方法,如果沒有找到就會(huì)到父類中進(jìn)行查找。再調(diào)用父類中的方法。在繼承的關(guān)系中變量的使用,是從父類開始找。
@class關(guān)鍵會(huì)在另外個(gè)博文說明。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。