您好,登錄后才能下訂單哦!
在面向對象的語言中都會由繼承這種語法,而繼承我們通常使用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中繼承:
4.在繼承的機制中,對于方法的調用是從子類開始找方法,如果找到方法就會執行子類中的方法,如果沒有找到就會到父類中進行查找。再調用父類中的方法。在繼承的關系中變量的使用,是從父類開始找。
@class關鍵會在另外個博文說明。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。