Objective-C函数重载
Objective-C函数重载
1、重载定义:派生类继承父类方法时,该方法具有相同的返回类型,并且参数的数目与重载的方法相同,即对父类同名函数进行重写。
2、好处:可以利用重载来修改继承方法的定义。
实例:
- #import <Foundation/Foundation.h>
- @interface declaration : NSObject
- {
- int x;
- }
- -(void) initVar;
- @end
- @implementation declaration
- -(void)initVar
- {
- x=100;
- }
- @end
- #import <Foundation/Foundation.h>
- #import "declaration.h"
- @interface ClassB : declaration
- {
- }
- -(void) printVar;
- @end
- #import "ClassB.h"
- @implementation ClassB
- -(void)printVar
- {
- NSLog(@"x=%i",x);
- }
- @end
在如上的代码中,我定义并实现了两个类:declaration和ClassB,前者作为基类,后者作为派生类即子类,直接存在继承关系。现在如果我们在派生类中写一个与基类同名的函数:initVar,并且返回类型和参数个数名字都相同,那么派生类中的initVar函数就是重载基类中的同名函数了,而重载是属于复制函数,属于子类的,不是使用基类。
重载dealloc方法和super关键字
delalloc是从NSObject继承的。为什么我们在释放内存时不用release方法而用dealloc方法呢?因为在我们实践中release有时释放对象使用的内存,有时却不。只有在其他人引用某个对象时,release才释放该对象所占用的内存。这通过调用该对象的dealloc方法来完成,实际上是由dealloc来释放内存的。
如果重载dealloc方法,必须确保不仅要释放自己的实例变量所占用的内存,而且释放继承的变量所占的内存。
通过使用super关键词可以引用消息接收者的父类。
评论暂时关闭