首页 > 代码库 > Objective C多态
Objective C多态
面向对象三个基本特征就是封装、继承和多态。封装简单将就是将一组数据结构和定义在它上面的相关操作组合成一个类的过程,继承一种父子关系,子类可以拥有父类定的成员变量、属性以及方法。
多态就是指父类中定义的成员变量和方法被子类继承,父类对象可以表现出不同的行为。OC中的方法都是虚方法,运行时不看指针类型,根据生成对象的类型决定被调用的方法。
以交通工具为例,定义父类为Vehicle,两个子类Bicycle、Car都继承自它,都拥有父类的成员变量name、属性height以及实例方法run
“Vehicle.h”@interface Vehicle : NSObject { NSString *name; } @property(assign, nonatomic)int weight; -(void)run; @end<span style="font-family:SimHei;">"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多态
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。