歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Objective-C函數重載

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

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

實例:

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

 

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

 

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

 

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

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

重載dealloc方法和super關鍵字

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

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

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

Copyright © Linux教程網 All Rights Reserved