一.实例变量的可见度:一共有三种(@public,@protected以及@private)
1.他们之间的区别:
@public:在任何文件中都可以访问,(访问方式是通过对象 +指向操作符+实例变量,例如:per->name)
@protected:受保护的,有一定的访问权限,只允许在本类文件以及子类文件中访问,其他文件不可以访问.
@private:私有的,只允许在本类文件中访问,不可以在子类文件以及其他文件中访问
2.其中系统默认的可见度为@protected,为什么不是@public和@private呢?其原因如下:
为什么不声明为@public?
1.声明@public的实例变量,外部就可以访问和修改,会影响内部的一个实现,暴露实现细节
2.违背了OC面向对象三大特性之一----封装.(封装的思想是影藏内部实现,提供外接访问的借口)
为什么不声明为@private?
1.声明为@pravate的实例变量,子类文件访问不到,所以子类文件还需要重新定义声明
2.违背了OC面向对象特性之一-----继承.(父类有的东西,子类也有,可访问)
二.设置器和访问器
1.设置器和访问器又称为setter方法和getter方法;
2.setter方法的特点:
(1)他们都以减号方法开始;
(2)返回值都为空;
(3)只有一个参数.
三.循环导入问题#import头文件时,会将头文件的内容复制一份,而当使用被导入的这个类时,该类还未定义,所以识别不了,典型的循环导入问题.
2.解决方案:使用该类时不能把它当做一个类来使用,所以在.h文件中使用@class+要被导入的类名;将要被导入的类名命名为一个字符串再使用,但是它不具备类中的内容,所以需要在.m文件中#import "要被导入的类名.h"导入头文件
四.类的嵌套使用欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |