一、封装

1> 封装的定义

  • 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别

2> 封装的好处

  • 可以通过set方法防止为成员变量设置不合理的值
  • 仅向外部提供公开的接口,屏蔽成员变量的操作过程
  • 外界可以通过接口间接的操作成员变量,而不必关注内部细节

3> set方法和get方法

  1. set方法

    ① 作用:为成员变量赋值
    ② 命名规范
    )名字必须以set开头
    )set后紧跟成员变量名,且首字母要大写
    )返回值一定是void类型
    )一定接收一个类型与要赋值的成员变量一致的参数
    ③ 若成员变量为只读类型,通常不需要set方法
    ④ set方法可以用于监听成员变量的改变,而触发相应的操作
  2. get方法

    ① 作用:返回成员变量的值
    ② 命名规范
    )方法名与成员变量名一致
    )返回值类型与要返回的成员变量一致
    )不需要接收任何参数

二、继承

1> 继承的定义

  • 一个对象直接使用另一个对象的属性和方法,并扩展自己特有的属性和方法

2> 优缺点

  1. 优点

    ① 基于原有的模型,扩充特有的方法
    ② 抽取重复代码,降低代码冗余
    ③ 建立类与类之间的联系
  2. 缺点

    ① 耦合性太强

3> 基本使用

  • 可以使用继承自父类的成员变量和方法
  • 可以根据需求扩充自己特有的方法
  • 可以在子类中用同名方法来重写父类的方法
  • 调用一个方法时,先在当前类中找该方法,若找不到,再在父类中找

4> 使用注意

  • 用户自定义的类通常继承自系统中的根类,如:NSObject
  • OC语言的继承是单继承
  • 只能继承父类的非私有成员变量和方法
  • 继承不能减少父类中的成员变量和方法
  • 子类中不允许出现与父类中同名的成员变量
  • 父类必须声明在子类的前面

5> 继承与组合

  1. 继承

    ① 当两个类用有相同的属性和方法时,通常将相同的属性和方法抽取到
    一个父类,使用继承关系
    ② 若A类用有B类的部分属性和方法,通常让B类继承自A类
  2. 组合

    ① 当一个类包含另一个类的全部属性和方法,通常让这个类作为另一个
    类的属性,使用组合关系
    ② 若A类用有B类的全部属性和方法,通常让B类作为A类的属性

6> self与super

  1. self

    ① 基本使用
    )self是一个指针,指向调用当前方法的对象/类
    )可以调用成员变量和方法
    )使用self来调用成员变量,可以区分同名的局部变量
    ② 使用注意
    )用self调用当前方法会引发死循环
    )不能使用self在类方法中调用对象方法,反之亦然
    )不能使用self调用函数
  2. super

    ① 基本使用
    )每个类都会有一个super指针指向其父类
    )子类重写父类的方法时,若想保留父类的一些行为,通常用super
    调用父类中被重写的方法
    ② 使用注意
    )通过super可以直接调用父类中的类方法/对象方法
    )所调用方法的类型与当前方法的类型一致,如:若当前方法为类
    方法,则调用父类中的类方法,反之亦然

三、多态

1> 动态绑定的概念

  • 在程序的执行期间判断所引用对象的实际类型,根据实际的类型调用其相应的方法

2> 基本使用

  • 多态通常指多种形态
  • 体现为父类指针指向子类对象
  • 使用类动态绑定的概念

3> 优缺点

  1. 优点

    ① 当一个函数/方法用父类类型作为参数,可以接收父类、子类对象
    ② 降低了代码的冗余
  2. 缺点

    ① 不能使用父类指针调用子类的方法
    ② 编译器只会检测语法是否有误,只有在运行时才会根据动态绑定结果
    调用相应的方法

4> 使用注意

  • 多态必须以继承为基础,没有继承就没有多态
  • 在运行时会动态检测指针指向的真正对象
  • OC语言是弱语法,可以用用任何类型的指针指向一个已知的对象,只会发出警告  

OC - 3.OC的三大特性的更多相关文章

  1. OC基础 类的三大特性

    OC基础  类的三大特性 OC的类和JAVA一样,都有三大特性:继承,封装,多态,那么我们就来看一下OC中类的三大特性. 1.继承 继承的特点: (1)子类从父类继承了属性和方法. (2)子类独有的属 ...

  2. oc语言--面向对象的三大特性

    一.封装 1.什么是封装 在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将对象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的 ...

  3. OC语言-03-OC语言-三大特性

    一.封装 1> 封装的定义 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别 2> 封装的好处 可以通过set方法防止为成员变量设置不合理的值 仅向外部提供公 ...

  4. 黑马程序员——OC语言 三大特性之多态

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之一的多态 (一)多态的基本概念 OC对象具有多态性体现在 Per ...

  5. 黑马程序员——OC语言 三大特性之继承

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之继承 (一)继承的基本用法 先建立个Animal再用Dog继承前 ...

  6. (转载)OC学习篇之---类的三大特性:封装,继承,多态

    之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...

  7. OC面向对象的三大特性

    一.面向对象的三大特性:封装(成员变量).继承和多态 1. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员 ...

  8. OC学习6——面相对象的三大特性

    我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这也是面向对象的三大特征.OC学习篇之---类的三大特性(封装,继承,多态) 1.封装(Encapsulation)是指将对象的状态信息 ...

  9. 转 OC温故:类的三大特性(封装,继承,多态)

    原文标题:OC学习篇之---类的三大特性(封装,继承,多态) 我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性 ...

  10. OC学习篇之---类的三大特性(封装,继承,多态)

    之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习 ...

随机推荐

  1. SQL Server 堆表与栈表的对比(大表)

    环境准备 使用1个表,生成1000万行来进行性能对比(勉强也算比较大了),对比性能差别. 为了简化过程,不提供生成随机数据的过程.该表初始为非聚集索引(堆表),测试过程中会改为聚集索引(栈表). CR ...

  2. 【原】数据库SQL语句入门

    1.数据定义DDL(Data Definition Language)语言即对表结构的一些定义,主要包括动词为CREATE/DROP/ALTER. 1.1.CREATE语句 CREATE TABLE ...

  3. 关于在SharePoint2013中弹出模态化窗口的问题及关闭事件。

    js: /*弹出对话框方法开始*//** 弹窗方法(需要回传值时,自定义回调方法)* @url: 弹出窗口页面url* @width: 宽度* @height: 高度* @callback: 回调函数 ...

  4. 【HTML】Intermediate2:Text: AbbreviationsQuotations Code

    1.</abbr> attribute:title 2.Quotations blockquote :standalone often multi-line quotations-cite ...

  5. 表达式求职JAVA(转)

    下面将练习大量的树操作 package 乒乒乓乓; import java.io.ObjectInputStream.GetField; import java.util.ArrayList; imp ...

  6. bzoj 1975 [Sdoi2010]魔法猪学院(k短路)

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  7. [原]ubuntu下制作ubuntu源

    ubuntu下可以用debmirror来下载ubuntu的所有源: 配置ubuntu12.04_mirror.sh ########################################## ...

  8. hdoj 1406 完数

    完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  9. 什么时候应该使用C#的属性

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:什么时候应该使用C#的属性.

  10. Java反编译器安装及各版本介绍

    JAVA语言是1995年5月由SUN公司发布的,由于其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位.         不过,JAVA最突出 ...