OC之继承、初始化、便利构造器

2024-02-02 19:18

本文主要是介绍OC之继承、初始化、便利构造器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


继承

继承特点:上层(冒号后面)是父类,下层(冒号前面)是子类
继承是单向的不能相互继承
继承具有传递性,A继承于B,B继承于C,A具有B和C的特征和行为
子类能继承父类的所有特征和行为
面向对象提供了继承语法,能够大大简化代码,把公共的方法和实例变量写在父类里,子类只需要写自己独有的方法和实例变量即可
继承既能保证类的完整性又能简化代码
OC中只允许单继承
没有父类的类称为根类,OC中的根类是NSObject(祖宗)
继承的内容:所有实例变量和方法
如果子类不满意父类的方法,可以重写(overwrite)父类的方法
继承中方法的执行
A:B B:C C:D:NSOject
A继承自B,B继承自C,C继承自D  
给A对象发送消息eat:
1.查找本类中是否实现或者重写eat方法
2.如果本类没有实现,就去上一级的父类去查找是否实现eat
3.逐级查找eat方法,,直到找到为止,如果最后一个类也没有实现eat方法,程序会崩溃
super是编译器指令,并非对象
作用:给super发消息可以执行父类中实现的方法
子类可以重写父类的方法,即子类可以既有自己的实现,又有父类继承下来的实现,如果想使用,向super发送消息即可
创建对象分为两步:开辟内存空间、初始化
初始化方法的作用:为某些实例变量赋初值
初始化方法在整个对象生命周期内只调用一次
完整的初始化方法:
- (void ) init{
//给super发送init消息:即执行父类中的init方法
self = [super init];
if(self){
//子类自己的初始化设置
}
//初始化完成,返回对象本身
return self;
}
学习继承之前,初始化方法并没有self = [super init];字样。我们为实例变量逐一赋值
学习了继承之后,父类中声明了公共的实例变量。作为父类,也有自己的初始化方法,为这些事例变量进行赋值。
子类中定义了除了父类中的实例变量之外的实例变量
在自身初始化过程中,优先向super发送init方法。初始化公共变量。初始化成功后,再初始化自身特有变量,从而完成所有
实例变量的初始化
初始化过程:
1.自己的初始化方法中,优先调用父类的初始化方法。
2。父类的初始化方法中再调用父类的初始化方法,依次往上调用
3。处于最上层的初始化完成后回到第二层初始化方法中,完成第二层的初始化
4。第二层的初始化完成后再返回第三层的初始化方法中,依次执行初始化方法直到本类完成初始化方法
初始化方法的特征:
初始化方法是“-”方法
返回值是id或者instancetype类型
以init开头
可以带0到多个参数(也就是咱们的自定义初始化方法)
内部实现:先执行super的初始化方法,再初始化自身变量,最后return self
便利构造器
声明和实现便利构造器
+(id)personWithName:(NSString *)name
{
Person * p = [[Person alloc]initWithName:name];
return  p;
}
便利构造器在初始化方法的基础上前进一小步,封装了对象的创建过程(也就是把alloc init 方法封装到对象内部)
便利构造器是+方法,只能类去调用,可以添加参数
内部实现:封装了alloc init方法,使用起来更简洁

这篇关于OC之继承、初始化、便利构造器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/671693

相关文章

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

Java 继承和多态的作用及好处

《Java继承和多态的作用及好处》文章讲解Java继承与多态的概念、语法及应用,继承通过extends复用父类成员,减少冗余;多态实现方法重写与向上转型,提升灵活性与代码复用性,动态绑定降低圈复杂度... 目录1. 继承1.1 什么是继承1.2 继承的作用和好处1.3 继承的语法1.4 子类访问父类里面的成

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C#继承之里氏替换原则分析

《C#继承之里氏替换原则分析》:本文主要介绍C#继承之里氏替换原则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#里氏替换原则一.概念二.语法表现三.类型检查与转换总结C#里氏替换原则一.概念里氏替换原则是面向对象设计的基本原则之一:核心思想:所有引py

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

SpringIOC容器Bean初始化和销毁回调方式

《SpringIOC容器Bean初始化和销毁回调方式》:本文主要介绍SpringIOC容器Bean初始化和销毁回调方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录前言1.@Bean指定初始化和销毁方法2.实现接口3.使用jsR250总结前言Spring Bea

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代