OC之多态

多态就是用父类类型的指针创建子类的对象,比如Dog类继承了Animal类,下面都是多态:

Animal *aa = [Dog new];

Dog *dd = (Dog *)aa;

1.没有继承就没有多态

2.代码的体现:父类类型的指针指向子类对象

3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象

4.局限性:

父类类型的变量不能直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法

时间: 2025-01-20 10:25:14

OC之多态的相关文章

OC面向对象—多态

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

Cocoa Programming学习总结

OC的对象消息机制 书中讲到,NSObject类中有一个成员变量isa,其指向一个结构体,这个结构体用于表示类的结构体,称之为类结构体.结构体中包括:该类独有的数据成员的类型(注意是类型,不是数据成员的值,地址什么的),函数列表,以及一个指向父类的类结构体指针(因为OC不允许多重继承,所以一个就够了).其中函数列表通过一个映射列表实现的,给出一个键值将得到一个函数地址如果该键值存在的话. 而且OC里面的类函数调用,或者称之为消息传递(更为贴切一点),都将被编译器改写为一个叫objc_sendMs

多态 OC——第十天

1.多态  父类指针指向子类对象      没有继承就没有多态      联系前面知识才能清楚什么是多态,所以放到最后面总结小知识点,有前面的知识会对多态更好的了解,会觉得简单很多,但是看此篇博文需要有前面的基础,下面带大家看下: 封装:隐藏内部实现,稳定外部接口.            封装就是定义类 定义属性 定义方法 属性:封装了setter get方法  Person.h @property(nonatomic,retain)NSString *name,*sex; 类封装了实例变量和方

多态 OC——第十天

1.多态  父类指针指向子类对象      没有继承就没有多态      联系前面知识才能清楚什么是多态,所以放到最后面总结小知识点,有前面的知识会对多态更好的了解,会觉得简单很多,但是看此篇博文需要有前面的基础,下面带大家看下: 封装:隐藏内部实现,稳定外部接口.            封装就是定义类 定义属性 定义方法 属性:封装了setter get方法  Person.h @property(nonatomic,retain)NSString *name,*sex; 类封装了实例变量和方

OC基础之访问修饰符

做C#.Java的人都知道private.protect.public这些访问权限,在OC中看项目基本都没用到这些,昨天就好奇的仔细了解了下,其实OC中也是有这些访问权限的修饰.说实话有好多做过编程的也未必对这些基础知识了解. 1.分清属性和变量的区别 属性是对变量的封装,可以通过属性(get\set)方法来访问变量.例如有一些变量(例如年龄.性别等)在赋值或取值要满足一些条件,那如何解决呢? 于是属性就应运而生,用它的get.set方法来解决这个问题 ,这也是面向对象中封装的体现. 2.pri

OC语言大总结(上)

根据OC学习的知识点,总结了一下,希望能帮到大家! 作者:韩俊强  未经允许,请勿转载! 关注博主:http://weibo.com/hanjunqiang 第一节类于对象   类与对象http://blog.sina.com.cn/s/blog_814ecfa90102vtum.html 知识点 注意事项 面向对象编程 OOP(Object Oriented Programming) 面向对象语言 C++,Java,C#,OC,Swift 概念 类,对象,封装,继承,多态... 面向过程编程

018-继承-OC笔记

学习目标 1.[掌握]Xcode开发文档 2.[掌握]static关键字 3.[掌握]self关键字 4.[掌握]继承 5.[掌握]NSObject 6.[掌握]访问修饰符 7.[掌握]私有实例变量和私有方法 8.[掌握]多态 9.[掌握]description 一.Xcode开发文档 苹果提供了很多的框架,每个框架中有很多类,每个类有很多方法,每个方法也有各种不同的用法.我们怎么查看这些框架里的这些类里的这些方法呢?苹果为我们提供了一个全面.丰富.牛逼的开发文档,只要我们装上就能随时查看了.

OC第一天——面向对象

1.OC: Object- C ,面向对象的语言 2.OC 和 C的区别: <1> oc是 c的超集 ,oc是在c语言的基础上做了扩展,c语言中的所有语法,在oc中都可以使用,甚至你可以在工程里加入C++ 语言 <2>oc在c基础上扩展了面向对象的特点 <3>oc 是一门运行时语言 <4>oc为我们提供了丰富的类库 3. 如何学习好OC ?     //1.百度 (ios)     //2.看苹果的官方文档(API接口网站)     //3.看博客     

OC面试题[搜集]

浅复制和深复制的区别?//浅拷贝和深拷贝 答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象 深层复制(mutableCopy):复制引用对象本身 意思就是有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源 还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想.深复制就好理解了,内存中存