歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C之多態學習筆記

Objective-C之多態學習筆記

日期:2017/3/1 9:38:21   编辑:Linux編程

面向對象三個基本特征就是封裝、繼承和多態。封裝簡單將就是將一組數據結構和定義在它上面的相關操作組合成一個類的過程,繼承一種父子關系,子類可以擁有父類定的成員變量、屬性以及方法。

多態就是指父類中定義的成員變量和方法被子類繼承,父類對象可以表現出不同的行為。Objective-C中的方法都是虛方法,運行時不看指針類型,根據生成對象的類型決定被調用的方法。

以交通工具為例,定義父類為Vehicle,兩個子類Bicycle、Car都繼承自它,都擁有父類的成員變量name、屬性height以及實例方法run

“Vehicle.h”
@interface Vehicle : NSObject
{
NSString *name;
}
@property(assign, nonatomic)int weight;
-(void)run;
@end
<span >"Bicycle.h"</span>
@interface Bicycle : Vehicle
@end
"Car.h"
@interface Car : Vehicle
@end

分別實現Car和Bicycle中的run方法

@implementation Bicycle
-(void)run
{

name=@"自行車";
self.weight=100;
NSLog(@"%@ %d", name , self.weight);
}
@end

@implementation Car
-(void)run
{
name=@"汽車";
self.weight=2000;
NSLog(@"%@ %d", name, self.weight);
}
@end

在main.m中測試

#import <Foundation/Foundation.h>
#import "Vehicle.h"
#import "Car.h"
#import "Bicycle.h"
int main(int argc, const char * argv[])
{

@autoreleasepool {
Car *car=[[Car alloc]init];

Bicycle *bike=[[Bicycle alloc]init];

Vehicle *veh=car;
[car run];
veh = bike;
[veh run];
}
return 0;
}

運行結果為:汽車 2000
自行車 100

Objective-C中@property的所有屬性詳解 http://www.linuxidc.com/Linux/2014-03/97744.htm

Objective-C 和 Core Foundation 對象相互轉換的內存管理總結 http://www.linuxidc.com/Linux/2014-03/97626.htm

使用 Objective-C 一年後我對它的看法 http://www.linuxidc.com/Linux/2013-12/94309.htm

10個Objective-C基礎面試題,iOS面試必備 http://www.linuxidc.com/Linux/2013-07/87393.htm

Objective-C適用C數學函數 <math.h> http://www.linuxidc.com/Linux/2013-06/86215.htm

好學的 Objective-C 高清PDF http://www.linuxidc.com/Linux/2014-09/106226.htm

Copyright © Linux教程網 All Rights Reserved