歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C函數重載

Objective-C函數重載

日期:2017/3/1 10:23:33   编辑:Linux編程

1、重載定義:派生類繼承父類方法時,該方法具有相同的返回類型,並且參數的數目與重載的方法相同,即對父類同名函數進行重寫。

2、好處:可以利用重載來修改繼承方法的定義。

實例:

  1. #import <Foundation/Foundation.h>
  2. @interface declaration : NSObject
  3. {
  4. int x;
  5. }
  6. -(void) initVar;
  7. @end

  1. @implementation declaration
  2. -(void)initVar
  3. {
  4. x=100;
  5. }
  6. @end

  1. #import <Foundation/Foundation.h>
  2. #import "declaration.h"
  3. @interface ClassB : declaration
  4. {
  5. }
  6. -(void) printVar;
  7. @end

  1. #import "ClassB.h"
  2. @implementation ClassB
  3. -(void)printVar
  4. {
  5. NSLog(@"x=%i",x);
  6. }
  7. @end

在如上的代碼中,我定義並實現了兩個類:declaration和ClassB,前者作為基類,後者作為派生類即子類,直接存在繼承關系。現在如果我們在派生類中寫一個與基類同名的函數:initVar,並且返回類型和參數個數名字都相同,那麼派生類中的initVar函數就是重載基類中的同名函數了,而重載是屬於復制函數,屬於子類的,不是使用基類。

重載dealloc方法和super關鍵字

delalloc是從NSObject繼承的。為什麼我們在釋放內存時不用release方法而用dealloc方法呢?因為在我們實踐中release有時釋放對象使用的內存,有時卻不。只有在其他人引用某個對象時,release才釋放該對象所占用的內存。這通過調用該對象的dealloc方法來完成,實際上是由dealloc來釋放內存的。

如果重載dealloc方法,必須確保不僅要釋放自己的實例變量所占用的內存,而且釋放繼承的變量所占的內存。

通過使用super關鍵詞可以引用消息接收者的父類。

Copyright © Linux教程網 All Rights Reserved