------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
今天回顾的内容是OC面向对象思想的三大特性之一,封装。
由于之前学习过Java的原因,所以对面向对象的封装这个特性算是比较了解了。
封装就是对类(或者说是对象)的一些属性进行保护,使属性不会随意被外界所更改,以此保证系统的稳定健壮和安全。属于一种访问权限的限制。
在Java中常用的访问权限修饰符有Public、Protected和Private三种,以这种访问权限的限制来控制,哪些属性或是方法是可以开放给外界使用的,而哪些是需要收到保护而不对外界开放的。这就是我所理解的封装。
以下是一段进行了封装的OC类的代码:
#import <Foundation/Foundation.h>
@interface Host : NSObject
{
//类的属性
int _version; //主机版本
NSString *_code; //主机序列号
int _type; //主机类型
int _chNum; //主机通道数
}
//getter & setter
-(void)setVersion:(int)version;
-(int)getVersion;
-(void)setCode:(NSString *)code;
-(NSString *)Code;
-(void)setType:(int)type;
-(int)Type;
-(void)setChNum:(int)chNum;
-(int)ChNum;
//类的方法
-(void)startup; //启动
-(void)shutdown; //关机
-(void)reboot; //重启
-(void)show; //显示主机信息
@end
这个类大概描述了一个主机的四个属性,需要注意的是在声明这个类的属性时并没有声明访问权限,这种情况下将使用默认访问权限Protected(受保护的)。
在这种情况下,外界无法直接对属性进行操作,而必须通过我们对外发布的setter和getter来间接操作。
而在这些setter和getter中,我们就可以依据程序的具体实现,来具体分析需要对该项属性做哪些验证处理,以保证程序的健壮性。
需要说明的是,出于某些特殊需求,或是特殊应用场景的考虑下。
我们需要在类中声明某些方法,但不想让外界看到甚至调用。这个时候我们应该怎么办呢?
这个时候我们就需要用到OC中的私有化这块的知识了,若是出现上述的需求。我们只需要在类的实现(.m文件)中去实现该方法或属性即可。
像这样在类的实现中定义的方法和属性外界是不可见的。这样我们就定义了私有变量和私有方法。
以上就是我对OC中面向对象三大特性之一——封装的一些个人理解。