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关键词可以引用消息接收者的父类。