可见度

可见度

OC的实例变量可见度有四种:@package,@public , @protected, @private。

因为package比较少用,这里先不提。那么就剩下三种了。

类内:在类接口和实现以内。

类外:在类接口和实现之外。

在类外如果想直接使用实例变量,必须使用@public来修饰可见度,否则不能直接操作实例变量。

@public

在类内和类外都可以直接使用,并且可以被继承。虽然这样的可见度,对我们来说很方便,但是对程序内部细节的保护没有一点帮助,因此,@public最好不用。

@protected

如果在声明成员变量的时候,没有对其使用可见度描述,则这些实例变量的默认可见度是protected的。

protected,在类外不能使用,在类内可以使用,可以被继承(这是与private的区别)。

@private

私有可见度,描述的实例变量,在类内可以使用,在类外不能使用,并且不能被继承。

例子:

Student.h文件


#import <Foundation/Foundation.h>

@interface Person : NSObject{

//2015年04月14日10:05:55 北京

//实例变量指的是能否看见实例变量。

//类外:在类接口和实现以外,必须是@public

//类内:在类接口和实现以内,

//如果想要在类外使用实例变量,必须描述为@public,否则无法直接使用。

@public

//禁止使用

//@public,类内类外都可以直接使用

//可以被继承

NSString *_name;

//如果没有可见度描述,默认是受保护的,即@protected。

@protected

//类外不能使用

//类内可以使用

//可以被继承

NSString *_sex;

@private

//类外不能使用

//类内可以使用

//不能被继承

NSString *_num;

//可见度描述是可以写多次的。

//但是尽量不要写多次。

@public

NSString *_color;

}

- (void) sayHi;

@end

Student.m文件


#import "Person.h"

@implementation Person

- (void) sayHi{

NSLog(@"%@",_name);

NSLog(@"%@",_sex);

NSLog(@"%@",_name);

}

@end

main.m文件


#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

@autoreleasepool {

Person *p1 = [[Person alloc]init];

p1->_name = @"123";

//        p1->_num = @"123";//私有的,报错

//        p1->_sex = @"123";//保护的,报错

}

return 0;

}

时间: 2024-11-10 10:32:15

可见度的相关文章

实例变量可见度、方法、setter、getter

oc中的消息机制:如果为类方法,消息接收者为类名 如果为实例方法,消息接收者为对象名 消息带参数给参数,不带就不给 消息有返回值,定义相同类型的变量接收,没有就不需要定义变量 //各实例变量的课件度 NSInteger _height; @public NSString *_name;//为什么不默认用@public 修饰实例变量,破坏了封装性,不安全: @protected NSString *_gender; @private NSInteger _age; //其所占字节数根据操作系统位数

OC总结第二讲:实例变量可见度和方法

实例变量有3种常用的可见度:@public  @protected  @private public(公有的) 实例变量可以在类的外部和内部操作 protected(受保护的,默认的) 实例变量只能在该类和其子类内操作 private(私有的) 实例对象只能在该类内访问 所谓的内部,指的是相应类的@implementation和@end之间 方法: 1.类方法:只能类使用 例如: +(id)alloc 注意:类方法中不能使用实例变量 2.实例方法: 只能对象使用, - (void)satHi 程

oc 可见度,方法

//  main.m //  OC02_可见度,方法 // //  Created by dllo on 15/7/16. //  Copyright (c) 2015年 cml. All rights reserved. // #import <Foundation/Foundation.h> #import "Student.h" #import "AudiCar.h" // OC里的枚举 NS_ENUM(NSUInteger, NSSeason){

Objective-C 实例方法可见度,方法

一 实例方法可见度,方法 1.实例变量的可见度 可见度                                                                       特点 public(公有的)                                              实例变量可以在类的外部和内部操作 protected(受保护的,默认的)                         实例变量只能在该类和其子类内操作 private(私有的)  

黑马day16 jquery&amp;内容过滤选择器&amp;可见度选择器

内容过滤选择器的过滤规则主要体现在它所包含的子元素和文本内容上 1.:contains(text) 用法: $("div:contains('John')")    返回值  集合元素 说明:匹配包含给定文本的元素.这个选择器比较有用,当我们要选择的不是dom标签元素时,它就派上了用场了,它的作用是查找被标签"围"起来的文本内容是否符合指定的内容的. 2.:empty 用法: $("td:empty")   返回值  集合元素 说明:匹配所有不包

第二讲、实例变量可见度、方法

一.实例变量可见度 可见度         特点 public          实例变量可以在类的外部和内部操作 protected    实例变量只能在该类和其子类内操作     默认 private        实例变量只能在该类内访问 内部:相应类的@implementation和@end之间 @interface Person : NSObject { @public NSString*_name; @protected NSString*_gender; int_age; //年龄

OC中实例变量可见度、setter、getter方法和自定义初始化方法

在对类和对象有一定了解之后,我们进一步探讨实例变量的可见度等相关知识 实例变量的可见度分为三种情况:public(共有),protected(受保护的,默认),private(私有的),具体的不同和特点如下: 具体的使用示例如下: 编程时默认的可见度是@protectde,为什么不使用@public呢? 因为OC是面向对象编程,使用@public关键字,暴漏了类内部的细节,从而不符合面向对象语言的三大特性之一——封装 实例变量经过@protectde修饰之后,我们就不能在该类和其子类外操作,例如

Oc(实例变量可见度与方法)(InstanceVariableAndMethod)

main函数 // //  main.m //  2-3 LessionInstanceVariableAndMethod // //  Created by lanouhn on 15/2/3. //  Copyright (c) 2015年 lanouhn. All rights reserved. // #import <Foundation/Foundation.h> #import "Boy.h" #import "MobilePhone.h"

第二讲实例变量可见度,set/get方法,自定义初始化(代码) 及description的使用

一.实例变量可见度,setter和getter方法,自定义初始化的综合使用实例 Person.h文件 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 @private 6 NSString *_name; 7 int _age; 8 @protected 9 NSString *_sex; 10 NSString *_hobby; 11 @public 12 NSString *_addres