当前位置: 首页 > news >正文

Objective C多态

       面向对象的封装的三个基本特征是、继承和多态。

包是一组简单的数据结构和定义相关的操作在上面的其合并成一个类,继承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

版权声明:本文博客原创文章。博客,未经同意,不得转载。

相关文章:

  • Hadoop 架构简介
  • 创业路(VC Pipeline),创业需要融资的阅读
  • 令人血脉喷张的animate.css
  • quartz+spring定时任务常见错误总结
  • HTML 超链接a的几种用法
  • java_JDBC(4)
  • svnserver搭建
  • Android视图绘制流程完全解析,带你一步步深入了解View(二)
  • OTS工作坑
  • GDB调试详解
  • Tomcat和JavaWeb目录和流程
  • 采访与书评 —— 《BDD In Action》
  • android下拉刷新
  • AOP之AspectJ注解
  • httpclient-4.0.1应用指南
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • CSS相对定位
  • SpringBoot 实战 (三) | 配置文件详解
  • Swift 中的尾递归和蹦床
  • swift基础之_对象 实例方法 对象方法。
  • 给新手的新浪微博 SDK 集成教程【一】
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 深度学习中的信息论知识详解
  • 试着探索高并发下的系统架构面貌
  • 收藏好这篇,别再只说“数据劫持”了
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微服务入门【系列视频课程】
  • 我是如何设计 Upload 上传组件的
  • 06-01 点餐小程序前台界面搭建
  • linux 淘宝开源监控工具tsar
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • !$boo在php中什么意思,php前戏
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (4) PIVOT 和 UPIVOT 的使用
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)计算机毕业设计ssm电影分享网站
  • (理论篇)httpmoudle和httphandler一览
  • (三)模仿学习-Action数据的模仿
  • (一)Neo4j下载安装以及初次使用
  • (已解决)什么是vue导航守卫
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .equals()到底是什么意思?
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 回调、接口回调、 委托
  • .Net各种迷惑命名解释
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @ModelAttribute 注解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @软考考生,这份软考高分攻略你须知道
  • [AX]AX2012 SSRS报表Drill through action