OC中的方法
来源:互联网 发布:数据库前置库 编辑:程序博客网 时间:2024/05/22 09:48
实例变量的可见度:一共有三种
@public:公共的,在任何文件中都可以访问.(访问方式是通过对象+指向操作符+实例变量,例如:per->name) @protectde:受保护的,有一定的访问权限,只允许再本类文件以及子类文件中访问,其他文件不可以访问. @private:私有的,只允许再本类文件中访问,不可以在子类文件以及其他文件中访问.
默认的可见度是@protected.
为什么不声明为@public?
1.声明为@public的实例变量,外部就可以访问以及修改,会影响内部的一个实现,暴露实现细节.
2.违背了OC面向对象三大特性之一---封装.(封装的思想是隐藏内部实现,提供外部访问的接口)
为什么不声明为@private?
1.声明为@private的实例变量,子类文件访问不到,所以子类文件还需重新定义声明.
2.违背了OC面向对象特性之一---继承.(父类有的东西,子类也有,可访问)
文件和类没有关系.文件中可以存放多个类,只要类符合接口部分以及实现部分的定义格式就可以了.
一般情况下,一个文件中就定义一个类,而且文件的名字和类的名字一样,这样就能清晰的知道该文件中的类的名字.
在+号方法中不能使用实例变量,实例变量是以依托与对象存在的,只有有了对象,实例变量才会有空间.
//在多个类中,类鱼类之间循环调用,会出现以下错误,这时,对于头文件的导入,要用,@class + 类名,
<span style="font-size:18px;">#import "Women.h"#import "Child.h"@class Women;@class Child;//创建男人类@interface Man : NSObject{ @protected NSString *_name; //姓名 NSString *_gender; //性别 NSInteger _age; //年龄 //Unkonwn type name "Women" //意思:不能识别的类型Women //产生原因:#import 头文件时,会将头文件的内容复制一份,而当使用Women这个类时,该类还未定义,所以识别不了.典型的循环导入问题. //解决方案:使用该类时不能把它当做一个类来使用,所以在.h文件中使用@class Women; 将Women声明为一个字符串,再使用,但是它不具备类中的内容,所以需要在.h文件中#import "Women.h" 导入头文件. Women *_wife; //妻子 Child *_baby; //孩子}</span>
0 0
- OC中的方法
- OC语言中的方法
- OC中的排序方法
- OC中的description方法
- OC 中的方法重载?
- OC中的方法-2
- OC中的类方法
- OC中的方法
- OC 中的方法
- oc中的私有方法
- OC中的私有方法
- OC中的initialize方法
- OC中的构造方法
- OC语言之OC中的私有方法
- OC中的对象初始化方法
- OC中的排序方法实例
- OC中的一些基础方法
- OC中的方法调用流程
- Pinterest用“引导式搜索”挑战谷歌?
- php 学习笔记 5
- 命令模式(CommandPattern)
- 机器学习-回归及分类问题总结
- Surprising Strings(STL)
- OC中的方法
- Acdream 1148 GCD SUM 莫比乌斯
- 对排序的总结&&二分查找
- Leetcode_Remove Duplicates from Sorted Array II
- HDU 4355 Party All the Time (三分算法的应用(含三分算法的讲解))
- uvalive 4997 ABCD Tiles
- Leetcod_Remove Duplicates from Sorted Array
- ZOJ 1639
- DOM(文档对象模型)