多态 oc

    1. 对象具备多种形态就是多态;
    2. 没有继承就没有多态;
    3. 父类指针指向子类对象;Animal *a = [Dog new]; [a eat];
    4. 调用方法是会检测对象的真是形象;
    5. NSObject *n = [Dog new];
    6. NSObject *n = [Animal  new];
    7. OC是弱语法;runtime动态属性;只会出现警告,不会报错;
    8. 多态的好处:
    9. 喂狗;喂猫;可以用喂动物来代替;因为猫和狗有共同父类;
    10. 如果参数中使用的是父类类型,可以传入父类,子类对象;
    11. 多态的限制:
    12. 父类类型的变量不能用来调用子类的方法;Animal *aa = [Dog new];
    13. aa指向的是Animal类型;我们使用强制类型转换为Dog类型:
    14. Dog *dd = (Dog *)aa;
    15. 多态
    16. 没有继承就没有多态
    17. 代码的体现:父类类型的指针指向之类对象;
    18. 好处:如果函数、方法参数中使用的是父类类型,可以传入父类、子类对象;
    19. 局限性:父类类型的变量不能直接调用子类特有的方法;必须强转为子类类型变量后,才能直接调用子类类型方法;
时间: 2024-08-05 19:27:44

多态 oc的相关文章

黑马程序员--Objective-C之--OC面向对象的三大特征

OC面向对象的三大特征是封装.继承和多态. OC语言也支持面向对象的三大特征,OC提供了@private.@package.@protected.@public等访问控制符来实现封装 OC也允许子类来继承父类,并且支持多态. 一.封装 封装指的是將对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法对内部信息的操作和访问. OC的封装特性需要通过使用访问控制符来实现. (一).访问控制符 1.@private:当前类访问权限.如果类的成员变量使用@priva

C和OC的基础语法(易混淆的概念知识)

List 0. 深复制与浅复制, NSObject万能指针.id指针.instancetype区别,单例import.include.@class的区别 strong 与 weak 区别 #define  和  typedef的区别, static 与  extern 区别,@required与@optional 区 别,@private.@protected .@public.@package区别 变量的命名规则以及规范(4规则,2规范) 数据类型转换 printf与scanf,自增自减,逻辑

OC基础--简介

OC简介: 1986年,BradCox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言. 1985年,被赶出苹果公司的Steve Jobs成立了NeXT公司,致力于开发强大且经济的工作 站.NeXT选择Unix作为其操作系统 1988年Steve Jobs获得了Objective-C的使用版权,使用Objective-C来编写NeXTSTEP操作系统,Objective-C使得设计NeXTSTEP操作系统更加容易 1994,NeXT与Sun共同制定

疯狂iOS上1

一:iOS应用与开发环境 1.1 OC与iOS简介 1.2 搭建iOS开发环境 1.3 第一个OC程序 1.4 熟悉Xcode 左边导航面板从左到右依次是:项目导航.符号导航.搜索导航.问题导航.测试导航.调试导航.断点导航.日志导航,快捷键是command+1/2 右边检查器面板包括:文件检查器.快速帮助检查器.身份检查器.属性检查器.大小检查器.连接检查器,快捷键是command+option+1/2 右下端库面板包括:文件模板库.代码片段库.对象库.媒体库,快捷键是control+opti

IOS初掌握

核心:类和对象特性:封装.继承.多态oc是全动态语言优点:复用性.可扩展性类:具有相同特征和行为的事物的抽象对象是类的实例类是对象的类型接口部分:对外声明类的特征和行为实现部分:对内实现行为 类方法中不能写实例变量实例方法只能使用对象调用类     名:所有单词首字母均大写.  GoodStudent.h对象名称:遵循驼峰命名法.  goodStudent;方法名称:每一个参数的修饰词都分别遵守驼峰命名法.initWithName:withAge:withAddress实例变量:遵循驼峰命名法,

iOS 基础 第二天(0805)

0805 面向对象三大特性 封装.继承和多态 oc的方法都是在运行过程中才会检测的.编译时方法没实现只会出现警告,运行时出错.如果方法实现了但没有声明,运行时对象仍然可以调用方法不会出错.这是OC中弱语法的表现 说白了oc中的弱语法就是因为运行时检测合理性和可用性.编译时不会出错顶多是警告,运行时才警告.这个现象不仅仅体验在方法的声明和实现上,比较好的一个例子是MPMoviePlayerController的截屏通知事件,它需要传入float类型的数组,如果你在编译写了整型不会报错也不会警告,但

OC基础—多态(超级简单)

前言: oc中的指针类型变量有两个:一个是编译时类型,一个是运行时类型,编译时类型由声明该变量是使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译时类型和运行时类型不一致,就有可能出现多态. 正文: 新建一个CHPerson类 1 @interface CHPerson : NSObject 2 -(void)eat; 3 -(void)play; 4 @end 5 --------------------------------------------------------- 6

OC面向对象—多态

一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. Animal类的声明 Animal类的实现 Dog类继承自Animal类 Dog类的实现 测试程序: 二.使用注意 代码分析: Dog *d=[[Animal  alloc] init];   动物是一条狗?语义正确吗? NSString *str=[Dog  new];     狗是一个字符串?正确吗? Oc语言是

OC学习篇之---类的三大特性(封装,继承,多态)

之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java