Objective C多态
2024-09-15 10:55:00
面向对象的封装的三个基本特征是、继承和多态。
包是一组简单的数据结构和定义相关的操作在上面的其合并成一个类,继承1种亲子关系,子类能够拥有父类定的成员变量、属性以及方法。
多态就是指父类中定义的成员变量和方法被子类继承,父类对象能够表现出不同的行为。
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
版权声明:本文博客原创文章。博客,未经同意,不得转载。
最新文章
- centos在线安装svn
- Android内核开发:系统启动速度优化-Android OS启动优化(转)
- [转]C程序内存区域分配(5个段作用)
- openstack创建虚拟机的步骤
- js net 除法取整
- (转)OpenCV 2.4.8 +VS2010的开发环境配置
- repeater 分页显示数据
- visual studio 2010 C语言声明异常
- python基础--字典
- 复制程序到notepad++编辑器出现乱码的解决方法
- SQL语句整理2
- VMware内CentOS7虚拟机硬盘扩容
- :适配器模式:Adapter
- centos7.2 get pid by process name with python3.6
- SSH框架整合中Hibernate实现Dao层常用结构
- ubuntu—终端安装mysql
- python正则的中文处理(转)
- 17-7-27-日常学习react
- spring mvc:复选框(多选)
- selenium-webdriver(python) (十四) -- webdriver原理(转)
热门文章
- Nginx模块开发入门(转)
- ssis 到别的表查找临时变量值
- SharePoint 2013 配置启用搜索服务
- Android Push Notifications using Google Cloud Messaging (GCM), PHP and MySQL
- 好记性不如烂笔头85-spring3学习(6)-BeanFactory 于bean生命周期
- DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表
- Lenovo E46A-Win 7_无线灯亮但无法启动(耽误3天以上您信吗.....)问题: wlan autoconfig 依赖服务或组无法启动
- Codeforces 135A-Replacement(思维)
- hdu(2062)-Subset sequence 组合数学
- MVC日期格式化的2种方式