美文网首页
OC入门篇,关于OC中几个重点概念的理解

OC入门篇,关于OC中几个重点概念的理解

作者: Jackie_123 | 来源:发表于2016-08-24 14:45 被阅读72次

在学习OC中,关于OC的几个重点概念想在这儿做几点总结和深入的了解。好了,话不多说,让我们开始吧:

1.关于继承和类别的区别

在OC中,给一个类扩展一个方法,有两种实现方式:类别和继承。

1.1 对于继承(Inherit):这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。OC作为一种面向对象的语言自然是少不了如此经典的特性。

对于以下情况,无法使用类别,必须使用继承。

1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。

2)扩展类的属性,这个类别无法做到。也就是说,类别中只能实现向现有的类添加方法,不能添加属性和实例变量。

对于继承,你可以记住的是:

继承修改的方法不会对父类原方法产生影响;类别修改的方法相当于替换了原有方法。

以viewController为例,继承一个ViewController相当于建立一个新的页面;而给一个ViewController添加类别用于增加或修改原ViewController上的方法;

1.2 对于类别(category):这是OC的一个特性,可以在不改变类名和原有类的实现的前提下,实现对类的方法的扩展。

以下两种方式最好使用类别:

1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内部实现对继承有所限制,所以最后使用类别来进行方法扩展。

2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。

所以,对于类别你可以记住的是:

类别用于添加新的方法无法改变原方法,如果冲突则覆盖,继承添加改变原方法并可以增加属性,继承功能更强大

2.对于面向对象的三大支柱

2.1 封装:我们定义一个类相当于封装了数据结构和操作数据的过程,让它们形成一个逻辑上的整体。编程中经常说的封装代码,其实就是把某个功能的相关代码提出来形成一个类或者方法,好处呢,需要自己体会。

2.2 从一个已经有的类创建新类的过程就叫做继承。提供继承信息的类成为父类(超类、基类);得到继承信息的类成为子类(派生类、衍生类)。通过继承我们可以让子类复用父类的代码(不在需要每个子类书写和父类相同的重复代码),与此同时我们可以创建子类对系统的功能提供了增强(子类是对父类的扩展和增强)。简单的说,如果你需要重复使用父类中某些变量或者方法自己又不愿意也没必要再写的那么继承将会是你不二的选择,既减轻工作负担又美化整个项目的代码整洁。

2.3 多态:子类继承父类的方法后,可以给父类的方法给出新的实现版本,这一过程称为方法的重写(也称为方法覆盖或方法置换)。由于不同的子类对父类的方法进行重写是可以给出各自的实现版本,同样的对象指针,接收到同样的消息,但是做了不同的事情,这就是多态。

如何实现多态(polymorphism)

方法重写: 在继承的过程中子类重写(override)父类方法 不同的子类给出不同的实现版本

对象造型: 用父类型的指针指向子类对象

相关文章

  • OC入门篇,关于OC中几个重点概念的理解

    在学习OC中,关于OC的几个重点概念想在这儿做几点总结和深入的了解。好了,话不多说,让我们开始吧: 1.关于继承和...

  • 使用反射重构代码(OC)

    前沿 OC里的runtime就是Java里反射的概念。关于OC中runtime的应用早就被玩烂了, 今天介绍关于用...

  • isa

    1.官方图片: 2.几个概念:a.oc中的对象就是objc_object的结构体b.oc中的类就是objc_cla...

  • objc_msgSend

    OC中消息的概念 OC中在对象上调用方法,用OC的术语叫“传递消息”。在OC中,如果向某对象传递消息,会使用动态绑...

  • 关于oc中NSClassFromString理解

    如果再程序中出现不得不使用某一个类或者某一个类的对象,但又不方便引入这个类,这时候不妨尝试一下动态加载某一个类, ...

  • OC引入Swift,混编

    一、OC中引入Swift 最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中...

  • Effective Objective-C 2.0笔记(二)

    对象,消息,运行期 理解“属性”这一概念 OC是通过运行时机制来提供相关支持的,属性则是用来封装OC对象中数据的类...

  • Objective-C 基础

    package oc 中没有包(package)的概念, Java import oc 导入命令,导入系统类库使用...

  • iOS 编写高质量代码(二)

    这篇将从面向对象的角度分析如何提高OC的代码质量。 一、理解“ 属性 ”这一概念 属性(@property)是OC...

  • iOS底层isa结构分析

    在介绍正文之前,首先需要理解一个概念:OC对象的本质是什么? OC对象本质 在探索oc对象本质前,先了解一个编译器...

网友评论

      本文标题:OC入门篇,关于OC中几个重点概念的理解

      本文链接:https://www.haomeiwen.com/subject/ilqosttx.html