美文网首页
class extension-实现面向对象编程的信息隐藏

class extension-实现面向对象编程的信息隐藏

作者: Crazy2015 | 来源:发表于2020-03-29 12:56 被阅读0次
.h
@interface Things : NSObject
@property (assign) NSInteger things1;
@property (readonly, assign) NSIngteger things2;

- (void)resetAllValues;
@end

.m
@interface Things ()
{
NSInteger thing4;
}
@property (readwrite, assign) NSInteger things2;
@propery (assign) NSInteger things3;

@end

添加私有属性和方法来扩展它。这也就是它被称为类扩展的原因。

仔细看一下things2属性,已经在头文件中定义过这个属性。那在extension中对它做了什么?

改变了它的读写权限,标记为readwrite,这样编译器就会生成setter方法了,不过它是只能在这个类中访问的私有方法了,而公共接口中,则只有getter方法了。

还添加了私有属性things3,它只可以在这个类的内部使用。

另外还添加了一个名为thing4的实例变量,它同样也是私有的。

为什么要做这些事情呢?

面向对象编程的一个特征就是信息隐藏。你只会把用户需要看到的展示出来,其他的则不需要。比如内部的实现的细节。这些技术可以帮助你实现这样的细节。

Extension是什么

Extension有一种说法叫『匿名分类』,因为它很像分类,但没有分类名。严格来说要叫类扩展

Extension的作用是将原来放在.h中的数据放到.m中去,私有化,变成私有的声明。

Extension是在编译的时候将所有的数据都合并到类中去

Extension一般用来做什么

声明私有属性

声明私有方法

声明私有变量

Extension的特点以及Extension与Category的区别

编译时决议(在编译的时候就将扩展的所有数据合并到类中去)

只以声明的形式存在,多数情况下寄生于宿主类的.m中

不能为系统类添加扩展

相关文章

  • class extension-实现面向对象编程的信息隐藏

    .h .m 添加私有属性和方法来扩展它。这也就是它被称为类扩展的原因。 仔细看一下things2属性,已经在头文件...

  • Pytorch搭建网络

    面向对象编程 类 面向对象编程——类class和对象object class是一种类型(Type),object是...

  • 【python】面向对象

    面向对象编程面向对象的设计思想是抽象出Class,根据Class(类)创建Instance(实例)。面向对象的程序...

  • 23

    编程方法大致有三种: ——面向对象 ——面向过程 ——函数式编程 面向对象——类——class 面向过程——过程—...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • prototype 对象

    大部分面向对象的编程语言,都以“类”(class)为基础,实现对象的继承。JavaScript 语言不是如此,它的...

  • class创建组件与state关键字

    es6中class关键字,是实现面向对象编程的新形式class与function的区别在与: class有自己的生...

  • 面向对象的Python:类(classes)和对象object(

    面向对象的Python:类class(es)和对象object(s) 面向对象的编程是当今最广泛使用的编程范式,几...

  • 面向对象基础

    一、面向对象概述 1、面向对象编程包括: OOA:面向对象分析OOD:面向对象的设计OOP:面向对象的编程实现 2...

  • 类与对象(1) - Class、Object

    面向对象编程思想 Java开发是利用 面向对象 的思想实现 面向过程 的开发。 面向对象编程(OOP:Object...

网友评论

      本文标题:class extension-实现面向对象编程的信息隐藏

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