一、继承
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、便利构造器封装了对象的创建过程,进一步简化了对象创建的步骤。

iOS学习之Object-C语言继承和初始化方法的更多相关文章

  1. iOS学习08之C语言内存管理

    本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...

  2. iOS学习07之C语言指针

    本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...

  3. OC:继承、初始化方法、便利构造器

    A继承 的作用就是为了,节省代码.     继承 :子类会继承父类 里面所有的内容     思想 :凡是继承过来的实例变量和方法 都是自己的(是从父类遗传过来的)     继承的使用场景 : 当我们多 ...

  4. C语言结构体初始化方法

    早上苏凯童鞋问我这个问题来着,写在这里. 我了解到的C中结构体初始化的方法大概有三种. 如这里我定义了一个结构体: typedef struct node { int x, y; }Node; 第一种 ...

  5. 【IOS学习】【Swift语言】

    基本语法: OS X playground 引入 import Cocoa IOS playground 引入 import UIKit 基本数据类型 let 定义常量 定义完成之后无法修改 var ...

  6. ios学习之旅---c语言函数

    1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...

  7. [转]IOS 学习笔记(8) 滚动视图(UIScrollView)的使用方法

    下面介绍pageControl结合ScrollView实现连续滑动翻页的效果,ScrollView我们在应用开发中经常用到,以g这种翻页效果还是很好看的,如下图所示: 通过这个例子,我们重点学习UIS ...

  8. Python基础学习-'module' object has no attribute 'urlopen'解决方法

    import numpy as npimport urlliburl = "http://archive.ics.uci.edu/ml/machine-learning-databases/ ...

  9. Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义

    初学OC.对init这种方法不是非常了解.我们如今来分别对init方法进行重写以及自己定义,来加深对他的了解. 本样例也是用Person类来进行測试. (一)重写init方法. (1)在Person. ...

随机推荐

  1. 洛谷P2737 [USACO4.1]麦香牛块Beef McNuggets

    P2737 [USACO4.1]麦香牛块Beef McNuggets 13通过 21提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描 ...

  2. php接口post提交方法 。

    方法一,用 file_get_contents function send_post($url, $post_data) { //$postdata = http_build_query($post_ ...

  3. eclipse打开出错 Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'

    eclipse出现注册错误:①在“打开”输入框中输入“regedit”命令,删除注册表的HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\  的INSTALLDIR删除. 或者 ...

  4. dedecms手机站要同步pc站的图片

    首先在dede目录下面找到  /include/extend.func.php  文件 //添加自定义函数 function replaceurl($newurl){ $newurl=str_repl ...

  5. Git 从服务器取得最新代码覆盖本地

    第一种方法 git fetch --all git reset --hard origin/master git fetch下载远程最新的, 然后,git reset master分支重置 第二种方法 ...

  6. 软件工程 speedsnail 冲刺5

    2015-5-9 完成任务:学习了黑马android教学视频10\11\12集,填写游戏人的姓名功能为明天的记分板准备: 遇到问题: 问题1 Suspicious method call; shoul ...

  7. objective-C常量与变量

    1.Objective-C中声明常量使用关键字const.如:const double PI = 3.1514; 2.Objective-C中变量可以分为成员变量.局部变量和全局变量(用的很少,尽量不 ...

  8. IOS基础——实例变量四种范围类型

    1.为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性. 但是为了提供灵活性,苹果也让开发者显示设置范围(四选一). 2.四种编译指令如下: @private 实例变量只能被声 ...

  9. 用户 'sa' 登录失败。 (Microsoft SQL Server,错误: 18456)

    今天登陆数据库的时候,却忽然登陆了不了,并且提示了这样的错: 解决方法: 1.用Windows身份登录数据库 2.安全性==>登录名==>双击sa 3.重设密码 4.状态==>登录: ...

  10. 在SQL中取出字符串中数字部分或在SQL中取出字符部分

    在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...