Objective-C 类的继承、方法重载


这次,我们讲解在Objective-C中如何进行类的继承以及方法的重载。按照惯例,我们还是先拿出一个重载的小例子,以例子为基础展开讲解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#import <Foundation/Foundation.h>
        
@interface ClassA: NSObject        //ClassA类型继承NSObject类型
{
    int x;                         //声明变量成员
}
-( void ) initVar;                  //声明初始化方法
@end
        
@implementation ClassA            //定义ClassA
-( void ) initVar                   //定义初始化方法
{
     x = 100;
}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@interface ClassB:ClassA   //ClassB类型继承ClassA类型
-( void ) initVar;         //声明初始化方法,此方法重载ClassA中的同名方法
-( void ) printVar;        //声明打印变量方法
@end
      
@implementation ClassB         //定义ClassB
-( void )initVar                 //定义初始化方法
{
    x = 200;
}
-( void ) printVar               //定义打印变量方法
{
    NSLog (@ "x = %i" , x);
}
1
2
3
4
5
6
7
8
9
10
int main( int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[ NSAutoreleasePool alloc] init];
    ClassB *b = [[ClassB alloc]init];     //定义ClassB类型实例
    [b initVar];                          //调用b对象的initVar方法
    [b printVar];                         //调用b对象的printVar方法
    [b release];                          //释放b对象占用的内存空间
    [pool drain];
    return 0;
}

输出:

1
x = 200;

接触过C++的同学看过上面的小例子,立刻就明白了,其实Objective-C的继承和C++继承的语法很类似,差别很小,都是在声明类型的时候多加一句代码,如ClassB类型继承ClassA类型,即在定义接口文件时编写:@interface ClassB:ClassA,即可完成继承。顺便提一句,Objective-C不能直接进行多继承,需要辅助协议(协议本质上类似与C#语言中的接口。关于协议的具体内容,将会在后面和分类概念一起介绍)实现多继承。

Objective-C中的方法重载也很简单,只要子类中的方法名称和父类的方法名称一样,即可自动对父类的同名方法进行重载,不用添加任何关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值