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关键词可以引用消息接收者的父类。
分享到:
相关推荐
- **重载与方法签名**:Objective-C不支持方法重载,但可以通过不同的参数列表来实现类似的效果。 - **成员函数指针:Selector**:Selector是Objective-C中表示方法调用的一种特殊类型。 - **参数默认值**:...
- 方法重载与选择器:Objective-C支持方法重载,即相同的方法名可以有多个不同的参数列表;选择器(`SEL`)用于唯一标识一个方法。 - 参数默认值与可变参数列表:Objective-C允许定义方法时指定参数的默认值,也...
Objective-C是建立在C语言之上的,它增加了一些面向对象的特性,同时采纳了Smalltalk的消息传递风格。C++是一种具有多范式的编程语言,包含了面向对象、泛型和过程式编程等特性。两个语言都来源于C语言,因此它们在...
这使得Swift在多态性和代码可读性方面有所增强,弥补了Objective-C在函数重载方面的不足。 总结来说,Objective-C的重载主要体现在参数个数的不同,而不是参数类型的不同,这与许多其他语言不同。同时,重写是子类...
2. **不支持运算符重载**:Objective-C不支持ad-hoc多态,即运算符重载,这与C++不同。 3. **单继承**:Objective-C仅支持单继承,但通过Categories和Protocols可以实现类似多重继承的功能。 4. **性能**:由于动态...
5. 方法重载:C++允许方法重载,Objective-C不允许相同名称和参数个数但参数类型不同的方法。 总的来说,Objective-C更适合Apple的生态系统,强调灵活性和动态性,而C++则更注重编译时的安全性和效率。C++在许多...
- **方法重载**:虽然Objective-C不支持传统意义上的方法重载,但可以通过方法选择器实现类似的效果。 #### 三、高级技术题 1. **运行时(Runtime)特性与API**: - **定义**:Objective-C运行时API允许程序在运行...
* Objective-C 语言支持函数的重载和函数的默认参数。 七、Objective-C 的面向对象编程 * Objective-C 语言支持类和对象的概念。 * Objective-C 语言支持继承、多态和封装等面向对象的概念。 * Objective-C 语言...
Object-C的基础是C语言,这意味着它继承了C的所有语法特性,如变量声明、函数定义、控制结构等。此外,它还引入了以下关键概念: - **消息传递**:Object-C中的对象通过发送消息来交互,而不是调用方法。当你在...
7. **集成Objective-C**:尽管Flutter是跨平台的,但在某些场景下,如调用原生API或者优化性能时,我们可能需要与Objective-C代码进行交互。Flutter提供了Platform Channels机制,通过它可以安全地在Dart和Objective...
8. 函数和方法的设计:如何设计清晰、高效、易于理解的函数和方法,包括参数的传递、返回值以及方法的重载。 9. 面向对象编程原则:如何在Objective-C中实现封装、继承和多态等面向对象原则。 10. 内存管理:...
5. **不支持运算符重载和多重继承**:Objective-C不支持C++中的运算符重载,也不允许多重继承,这一点与Java相似。但是,通过使用Categories和protocols,Objective-C可以提供多重继承的部分优势,同时避免了多重...
1. **基础语法**:Objective-C的语法与C语言紧密相关,包括变量声明、控制结构(如if语句和for循环)、函数等基本概念。同时,Objective-C特有的语法如消息传递(`[receiver message]`)和实例方法的定义也会被详细...
5)Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动态派发(消息派发)方式 6)Swift支持函数式编程(高阶函数) 7)Swift的协议不仅可以被类实现,也可以被Struct和Enum...
一、类 1. 类名 类名应该以三个大写字母作为前缀(双字母前缀为Apple的类预留) 不仅仅是类,公开的常量、Protocol等的前缀都为相同的三个大写字母。 当你创建一个子类的时候,你应该把说明性的部分放在前缀和父类名...
Objective-C是一种面向对象的编程语言,它在C语言的基础上增加了Smalltalk风格的消息传递机制。Objective-C主要应用于macOS X和gnustep系统,特别是在开发iOS应用程序时,如iPhone、iPod Touch、iPad等苹果移动终端...
Objective-C不支持构造函数重载,但可以通过定义多个初始化器来达到类似的效果。例如,可以提供一个无参数的初始化器`init`和一个带参数的初始化器`initWithColor:`。 #### 四、Get和Set方法 在Objective-C中,get...