1、 重载定义:派生类继承父类方法时,该方法具有相同的返回类型,并且参数的数目与重载的方法相同,即对父类同名函数进行重写。
2、好处:可以利用重载来修改继承方法的定义。
实例:
- #import <Foundation/Foundation.h>
-
- @interface declaration : NSObject
-
- {
- int x;
- }
-
- -(void) initVar;
- @end
- @implementation declaration
-
- -(void)initVar
- {
- x=100;
- }
- @end
- #import <Foundation/Foundation.h>
- #import "declaration.h"
-
- @interface ClassB : declaration
- {
-
- }
-
- -(void) printVar;
-
-
- @end
- #import "ClassB.h"
-
- @implementation ClassB
-
-
- -(void)printVar
- {
- NSLog(@"x=%i",x);
- }
- @end
在如上的代码中,我定义并实现了两个类:declaration和ClassB,前者作为基类,后者作为派生类即子类,直接存在继承关系。现在如果我们在派生类中写一个与基类同名的函数:initVar,并且返回类型和参数个数名字都相同,那么派生类中的initVar函数就是重载基类中的同名函数了,而重载是属于复制函数,属于子类的,不是使用基类。
重载dealloc方法和super关键字
delalloc是从NSObject继承的。为什么我们在释放内存时不用release方法而用dealloc方法呢?因为在我们实践中release有时释放对象使用的内存,有时却不。只有在其他人引用某个对象时,release才释放该对象所占用的内存。这通过调用该对象的dealloc方法来完成,实际上是由dealloc来释放内存的。
如果重载dealloc方法,必须确保不仅要释放自己的实例变量所占用的内存,而且释放继承的变量所占的内存。
通过使用super关键词可以引用消息接收者的父类。
分享到:
相关推荐
第1部分 Objective-C语言 第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 ...
首先,Objective-C中不完全支持重载,网上很多人要么将重载和重写搞混,要么说OC不支持重载(当然按照重载严格定义说OC不支持重载也没错),事实上OC支持参数个数不同的函数重载。 问题: Objective-C和Swift中有...
5)Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动态派发(消息派发)方式 6)Swift支持函数式编程(高阶函数) 7)Swift的协议不仅可以被类实现,也可以被Struct和Enum...
5)Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动态派发(消息派发)方式 6)Swift支持函数式编程(高阶函数) 7)Swift的协议不仅可以被类实现,也可以被Struct和Enum...
它利用重载的C函数来保持其接口简单,同时保持编译时的安全性。 例如, ASTEach根据其操作的数据结构采用不同的块: ASTEach (@[ @" a " , @" b " , @" c " ], ^( NSString *letter) { NSLog ( @" %@ " , letter);}...
一、类 1. 类名 类名应该以三个大写字母作为前缀(双字母前缀为Apple的类预留) 不仅仅是类,公开的常量、Protocol等的前缀都为相同的三个大写字母。 当你创建一个子类的时候,你应该把说明性的部分放在前缀和父类名...
Objective-C、Swift、Java 或 Kotlin 相当的运算速度。 Flutter 不使用原生组件,因此您不必编写任何层来与它们通信。 它呈现整个界面本身。 按钮、文本、媒体元素和背景都在 Flutter 本身的图形引擎中呈现。 该框架...
已知错误我们分析Objective-c的.h / .m,这将导致比实际更多的功能。如何使用可以分析同步IO或异步Deferred的代码。内部都使用IO阻塞线程直到完成,但是可以将它包装在Deferred中启动,以更好地体验带有GUI的应用...
---真正的跨平台目前各个平台的游戏开发几乎没有通用性,开发iPhone上的游戏需要学习Objective C,开发Android上的游戏大多用Java,开发Windows Phone上的游戏用C#,……。如何只学习一种语言就能够开发出跨越多个...