OC三大特性之一:继承的介绍

本文通过具体的代码示例,介绍了Objective-C中继承的概念及其应用。通过创建Car类及两个子类Taxi和Truck,展示了如何复用代码、重写方法以及访问父类属性。
部署运行你感兴趣的模型镜像

 

二、继承

继承是类中的一个重要的特性,他的出现使得我们没必要别写重复的代码,可重用性很高。当然OC中的继承和Java中是一样的,没多大区别,这里在看一个例子吧:

首先来看一下父类:Car

Car.h

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Car.h  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import <Foundation/Foundation.h>  
  10.   
  11. @interface Car : NSObject{  
  12.     NSString *_brand;  
  13.     NSString *_color;  
  14. }  
  15.   
  16. - (void)setBrand:(NSString *)brand;  
  17. - (void)setColor:(NSString *)color;  
  18. - (void)brake;  
  19. - (void)quicken;  
  20.   
  21. @end  
在Car类中定义了两个属性,以及一些方法

Car.m

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Car.m  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Car.h"  
  10.   
  11. @implementation Car  
  12. - (void)setBrand:(NSString *)brand{  
  13.     _brand = brand;  
  14. }  
  15. - (void)setColor:(NSString *)color{  
  16.     _color = color;  
  17. }  
  18. - (void)brake{  
  19.     NSLog(@"刹车");  
  20. }  
  21. - (void)quicken{  
  22.     NSLog(@"加速");  
  23. }  
  24. @end  
方法的实现


在来看一下子类:

Taxi.h

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Taxi.h  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Car.h"  
  10.   
  11. @interface Taxi : Car{  
  12.     NSString *_company;//所属公司  
  13. }  
  14.   
  15. //打印发票  
  16. - (void)printTick;  
  17.   
  18. @end  
看到Taxi类继承了父类Car,这里需要导入父类的头文件,然后在Taxi类中多了一个属性和方法

Taxi.m

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Taxi.m  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Taxi.h"  
  10.   
  11. @implementation Taxi  
  12.   
  13. - (void)printTick{  
  14.     [super brake];  
  15.     [self brake];  
  16.     NSLog(@"%@出租车打印了发票,公司为:%@,颜色为:%@",_brand,_company,_color);  
  17. }  
  18.   
  19. @end  
对方法的实现,这里我们看到实现文件中是不需要导入父类Car的头文件的,因为可以认为,Taxi.h头文件中已经包含了Car的头文件了。而且,这里可以使用super关键字来调用父类的方法,同时这里我们也是可以用self关键字来调用,这里看到其实这两种方式调用的效果是一样的,当我们在子类重新实现brake方法的时候(Java中的重写概念),那么这时候super关键字调用的还是父类的方法,而self调用的就是重写之后的brake方法了。同样,我们也是可以使用父类中的属性。


再看一下另外一个子类:

Truck.h

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Truck.h  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Car.h"  
  10. //卡车类继承Car  
  11. @interface Truck : Car{  
  12.     float _maxWeight;//最大载货量  
  13. }  
  14.   
  15. //覆盖父类的方法brake  
  16. //优先调用子类的方法  
  17. - (void)brake;  
  18.   
  19. - (void)unload;  
  20.   
  21. @end  
这里就自己定义了一个brake方法,这时候就会覆盖父类中的brake方法了。

Truck.m

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //  
  2. //  Truck.m  
  3. //  06_ExtendDemo  
  4. //  
  5. //  Created by jiangwei on 14-10-11.  
  6. //  Copyright (c) 2014年 jiangwei. All rights reserved.  
  7. //  
  8.   
  9. #import "Truck.h"  
  10.   
  11. @implementation Truck  
  12.   
  13. - (void)brake{  
  14.     [super brake];  
  15.     NSLog(@"Truck类中的brake方法");  
  16. }  
  17.   
  18. - (void)unload{  
  19.     [super brake];//调用父类的方法  
  20.     [self brake];//也是可以的  
  21.     NSLog(@"%@的卡车卸货了,载货量:%.2f,汽车的颜色:%@",_brand,_maxWeight,_color);  
  22. }  
  23.   
  24. @end  
这里就可以看到,我们会在brake方法中调用一下父类的brake方法,然后在实现我们自己的逻辑代码。


好了,继承就说这么多了,其实封装和继承两个特性没什么难度的,很容易理解的,下面在来看一下最后一个特性:多态


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值