天天看點

【Objective-C】OC中類的繼承

1:為什麼要有繼承關系?

  定義一個通用的類,它又基本的執行個體變量。子類可以繼承了該類,就可以擁有這些執行個體變量。子類也可以定義自己的執行個體變量。

  被繼承的類叫超類或者父類(superclass),繼承超類的類叫做子類(subclass)。

OC中繼承的文法規則為:

   @interface 子類:父類

2:接下來看執行個體代碼

  首先是ClassA.h

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

#import <Foundation/Foundation.h>

@interface ClassA : NSObject
{
    int x;
}
-(void)initVar;
@end
           
//
//  ClassA.m
//  ClassAB
//
//  Created by hmjiangqq on 14-1-22.
//  Copyright (c) 2014年 hmjiangqq. All rights reserved.
//

#import "ClassA.h"

@implementation ClassA

-(void)initVar{
    x=100;
}
@end

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

#import "ClassA.h"

@interface ClassB : ClassA

-(void)printVar;

@end

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

#import "ClassB.h"

@implementation ClassB
-(void)printVar{
    NSLog(@"x= %d\n",x);
}
@end

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

#import <Foundation/Foundation.h>
#import "ClassB.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        // insert code here...
        NSLog(@"Hello, World!");
        ClassB *b=[[ClassB alloc]init];
        [b initVar];  //父類中的方法
        [b printVar];
    }
    return 0;
}

           
【Objective-C】OC中類的繼承

繼續閱讀