博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC 继承子类对象调用方法机制 子类对象访问父类中的实例变量
阅读量:5371 次
发布时间:2019-06-15

本文共 875 字,大约阅读时间需要 2 分钟。

在继承中,子类对象如何调用到正确方法的机制

       每一个Objective - C对象都有一个隐藏的指针指向类的代码,当向一个对象发送消息的时候,当前的对象会首先在当前类里去查找相应的方法,如果找到的话,直接执行代码;若没有找到,则去父类里找对应的方法,如果找到的话,就会执行。如果找不到继续按照这样的原则,沿着继承链向上查找,直到根类NSObject(这个类是Objective - C所有类的根类),如果在这个NSObject类中仍找不到相应的方法,那么程序直接崩溃掉。

 

在继承的语法中,子类访问父类中的实例变量

  创建一个新类的时候,其对象首先从自身的超类继承实例变量(父类一定要设置  设值,取值方法),然后添加自己的实例变量。在这种情况下,每一个子类对象的指针指向对象的最顶端。也就是沿继承链所包含的所有对象的最开始位置,这样编译就可以通过地址的偏移来计算所能访问到所有的超类的实例变量。

重写的概念

       重写的概念,只存在于继承语法中。指的是:父类声明一个方法,但是父类并没有真正意义的去实现这个方法,而是在子类中真正的实现方法的功能,这种形式就叫做对这个方法的重写。(重写方法的目的是为了实现面向对象编程里的多态)。

如何在子类里面,直接调用父类方法或者父类的属性。

       @property 定义的属性 采用Super关键字,需要注意的是,super是一个关键字,不是参数,也不是实例变量,他只是编译器提供的一个功能,当你使用super的时候,编译器自然知道,你现在的目的只是访问父类的一些元素。(这里的super与self并不是一个概念:super是一个实实在在存在的一个关键字,而self只是一种调用机制,并不是关键字)

NSLog调用%@的机制

      当使用NSLog格式化参数是%@的时候,实际上失去调用打印对象的description方法,这个方法返回什么值,打印结果就是什么值。(在NSLog这个对象调用时,默认的是打印出我们定义的对象的地址)

 

转载于:https://www.cnblogs.com/oc-bowen/p/5021215.html

你可能感兴趣的文章
网络运维所有知识总结篇
查看>>
jasperreport_填充Report Templates
查看>>
phonegap 开发指南系列----简介(2)
查看>>
剑指offer——二叉树深度
查看>>
《漫画:这两个愿望我实现了》,长大后我成了程序猿
查看>>
有关于string的一些用法
查看>>
数据结构与算法-queue
查看>>
dll注入
查看>>
某某水卡数据算法
查看>>
details和summary
查看>>
SQL Server第一堂课:创建数据库,创建表,以及表中最基本的增,删,改
查看>>
最近遇到的几个c++笔试题
查看>>
Xcode 中设置部分文件ARC支持
查看>>
spring与junit整合测试
查看>>
查询避免Unknown column ‘xxx’ in ‘where clause’
查看>>
PHP If...Else 语句
查看>>
微信推送模板消息
查看>>
关于堆栈
查看>>
java集合框架和泛型
查看>>
每天进步一点点-->C语言文件操作函数
查看>>