·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> OC-3.OC的三大特性

OC-3.OC的三大特性

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

一、封装

1> 封装的定义

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

2> 封装的好处

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

3> set方法和get方法

  1. set方法

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

     

  2. get方法

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

     

二、继承

1> 继承的定义

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

2> 优缺点

  1. 优点

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

     

  2. 缺点

    ① 耦合性太强

     

3> 基本使用

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

4> 使用注意

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

5> 继承与组合

  1. 继承

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

     

  2. 组合

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

     

6> self与super

  1. self

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

     

  2. super

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

     

三、多态

1> 动态绑定的概念

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

2> 基本使用

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

3> 优缺点

  1. 优点

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

     

  2. 缺点

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

     

4> 使用注意

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