IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS | OC 类和继承 -> 正文阅读

[移动开发]iOS | OC 类和继承

继承

通过扩展或者修改既有类来定义新类的方法叫做继承,被继承的类称为父类,通过继承关系新建的类称为子类。

继承意味着子类继承了父类的所有特性,父类的数据成员和成员函数自动称为子类的数据成员和成员函数,子类可以:

  • 追加新的方法
  • 追加新的实例变量
  • 重新定义父类中的方法(重写)

通过继承而彼此关联的类组成的树称为类层次结构,位于类层次最顶端的类称为根类。NSObject是Cocoa环境下的根类。(实际上除了NSObject外,Cocoa环境中还有一个根类NSProxy)

在面向对象的语言中,有的和Objective-C一样有唯一根类,例如:Java,Smalltalk; 有的则不存在唯一根类,例如:C++.

继承的定义:OC中所有类都要继承根类,NSObject是OC中所有类的根类。

@interface 类名: 父类名
{
    实例变量的声明;
}

方法的声明;

@end

子类的定义包含父类接口的头文件是必须的。

子类通过super关键字来发送小心,从而实现父类方法的调用。super和self不同,并不确定指向某个对象,所以super只能被用于调用父类的方法,不能通过super完成赋值,也不能把方法的返回值指定为super.

子类重写父类的初始化方法:

-(id)init
{
    self = [super init]; /* 一定要在第一行调用父类的init放啊父 */
    if (self != nil) {
       //初始化操作
    }
    return self;
}

第一行调用父类的初始化方法可以防止漏掉父类中定义的实例变量的初始化。生成的实例对象的方法alloc会把实例对象的变量都初始化为0(实例变量isa除外)。原则上来说,初始赋值之后值不再发生变化的变量和需要显示设定初值的变量,都需要通过带参数的初始化方法来进行初始化。

继承和方法调用

self指的是收到当前消息的实例变量。super调用的是父类的方法,而至于到底调用那个方法则是有编译时类的继承关系决定的。

指定初始化方法:能确保所有实例变量都能被初始化的方法,是初始化的核心。通常,接收参数最多的初始化方法就是指定初始化方法。子类的制定初始化方法通常是通过向super发送消息来调用超类的指定初始化方法。另外一些通过封装来调用指定初始化方法的方法叫做非指定初始化方法。

如果子类中想重写父类中的指定初始化方法,一定要调用父类的指定初始化方法,如果不小心调用了父类的非指定初始化方法会造成递归循环调用,无法终止。

具体示例:类B继承类A

// 类A
-(id)init
{
    [self initWithMax:10];
    return self;
}

-(id)initWithMax:(int)max
{
    /*
    指定初始化操作
    */
}

// 类B
-(id)initWithMax:(int)max
{
    [super init];
    maximum = max;
    return self;
}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:10:03  更:2022-05-06 11:10:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 22:27:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码