zoukankan      html  css  js  c++  java
  • iOS学习之Object-C语言继承和初始化方法

    一、继承
    1、面向对象的三大特性:封装,继承,多态。
         面向对象提供了继承特性把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可。继承既能保证类的完整,又能简化代码。: 表示继承关系。
    2、继承的特点:
         1)没有父类的类称为根类,OC中的根类是NSObject(祖宗)。
         2)继承的上层:父类。继承的下层:子类。
         3)继承的内容:所有实例变量和方法(不包括私有的)。
         4)继承是单向的,不能相互继承。
         5)继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为。
         6)如果子类不满意父类方法的实现,可以重写(overwrite)父类的方法。
              1>重写:子类可以重新实现父类中的某个方法,覆盖父类以前的做法
              2>注意:父类必须声明在子类的前面
              3>调用某个对象(类)的方法时,优先去当前对象(类)中找,如果找不
    到,去父类中找。
          7)继承的坏处:耦合性太强
    二、super self
         1、super的作用:
              1)直接调用父类中的某个方法;
              2)super处在对象方法中,那么就会调用父类的对象方法,
                 super处在类方法中,那么就会调用父类的类方法;
              3)使用场合:子类重写父类的方法时想保留父类的一些行为。
                4)super不是对象,是编译器指令,用来向父类发送消息
         2、self的作用:
              1)指向了当前对象类(方法调用者),代表当前对象类;(谁调用了当前方法,self就代表谁)
              2)在对象方法中可以利用”self->成员变量名"访问当前对象内部的成员变量
                 [self 方法名]可以调用其他对象方法类方法;
              3)注意:self不能调用自己的方法,会死循环
              4)self在’-’号方法中,表示当前给这个方法发送消息的对象,在’+’号方法中,表示当前的类名。
         3、description
                打印一个对象,让对象发送description消息description默认实现是打印对象的地址如果想要打印对象的信息,重写description方法,修改内部实现即可。
     
    三、初始化方法
         1、创建对象分两步:
              1)为对象开辟空间;
              2)进行初始化操作。
         2、初始化方法的主要作用是:为某些实例变量赋初值。
         3、初始化方法在对象的整个生命周期里只使用一次。(注意:初始化方法是在对象的初始化阶段完成其实例变量的赋值操作,一个对象的初始化阶段只有一次,所以初始化方法只使用一次。)
         4、完整的初始化方法:
              - (instancetype)init {
                   self = [super init]; // 先向父类发送一个init消息
                       if(self != nil) { //如果向父类发送消息成功,在设置当前类
                        // 初始化设置
                        }
                   return self; //self表示发送init消息的对象
              }
         5、初始化方法特征
              1)初始化方法是“-”方法;
              2)id或者instancetype类型的返回值;
              3)以init开头;
              4)可以带0到多个参数
              5)先执行super的初始化方法,再初始化自身变量,后return self。
         6、初始化过程
              1)自己的初始化方法中,优先调用父类的初始化方法;
              2)父类的初始化方法中在调用父类的初始化方法,依次往上调用;
              3)处于最上层的初始化完成之后,回到第二层的初始化方法,完成第二层的初始化;
              4) 第二层的初始化完成之后,回到第三层的初始化方法中,依次执行初始化方法,直到本类的初始化方法完成。
    四、指定初始化方法
         1、指定初始化方法:无论调用哪一个初始化方法都会调用的初始化方法。
         2、通常会把初始化时想做的操作全部放到指定初始化方法中,这样就无需在每一个初始化方法中都要写一遍,简化代码,方便后期维护。
         3、选取原则:一般选参数最多的初始化方法作为指定初始化方法。
         
    五、便利构造器
         1、封装了对象创建过程:内部实现:封装了alloc和初始化操作,创建对象更加方便快捷。
         2、便利构造器是”+“方法。
         3、返回本类型的实例。
         4、方法名以类名开头。
         5、可以有0到多个参数。
    六、总结
         1、继承是面向对象三大特性之一,合理的继承,能减少很多冗余代码,加快开发速度。
         2、初始化方法以init开头,在对象的生命周期中只使用一次。
         3、便利构造器封装了对象的创建过程,进一步简化了对象创建的步骤。
  • 相关阅读:
    VSCode打开大文件插件
    https Java SSL Exception protocol_version
    Error creating bean with name 'tomcatEmbeddedServletContainerFactory ' (or a BeanPostProcessor involved) returned null
    在Java8的foreach()中不能break,如果需要continue时,可以使用return
    Spring cloud 超时及重试配置【ribbon及其它http client】
    祸害阿里云宕机 3 小时的 IO HANG 究竟是个什么鬼?!
    Convertion of grey code and binary 格雷码和二进制数之间的转换
    stringstream 使用方法
    [LeetCode] 91. Decode Ways 解码方法
    QString, string, int, char* 之间相互转换
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7089448.html
Copyright © 2011-2022 走看看