如何修改和访问方法中受保护的实例变量
2015-11-07 15:44
337 查看
1.实例变量的可见度有三种.
公共的(public) 实例变量可以在类的内部和外部操作。
受保护的(protected)实例变量只能在该类的内部及其子类中进行操作
私有的(private)实例变量只能在该类的内部操作。
2.修改方法中受保护的实例变量
首先在.m中实现赋值的方法,对实例变量进行赋值,实例变量对象 = 方法中的参数名,然后可以调用此方方法传入参数。
.m中
- (void)fixgAge:(int)age withweight:(int)weight andheight:(int)height{
_age = age;
_weight = weight;
_height = height;
}
.main中
Person *x = [[Person alloc] init];
[x fixgAge:18 withweight:45 andheight:160];
3.使用set和get方法访问
setter 和 getter 方法
在OC里为实例变量赋值的方法为称作 (设置器 )setter.
读取实际变量的方法被称做 (访问器) getter.
setter 的书写格式:- (void)setAge:(int)age;即set加上首字母大写的实例变量名(忽略下划线)
getter 的书写格式:- (int)age;即返回值类型与变量类型一致,方法名与实例变量名相同(忽略下划线)
.h中
- (void)setName:(NSString *)name;
- (NSString *)name;
.m中
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
return _name;
}
4. OC中方法分为两种
.类方法 : 类方法只能类去使用,例如 + (id)alloc;类方法中不能使用实例变量
.实例方法 :只能对象使用,例如 — (void)hello;
- (void)replaceObjectAtIndex:(NSUInteger无符号整型)index withObject:(id)anObject;
( “-” 方法类型标识符)
((void)方法返回值类型)
(repalaceObjectAtIndex:withObject: 方法名)
((NSUInteger),(id) 都是参数类型)
((index)(anObject))参数名字。
方法名是:
删除了类标识符,返回值类型,参数类型,参数名,空格后剩下的就是方法名
类中不能出现同名方法
“:”标识参数,不能省略。有冒号必须有参数
5.#import #include @class的区别
导入头文件,即导入头文件中的内容到当前类
#import "" 导入自定义类,#import <> 导入类库中的头文件。功能类似C语言的include,但是可以避免头文件被重复导入。#import 容易出现循环导入头文件问题。
@class:告诉编译器@class后的字符串作为类名使用,并未导入类的接口内容。
有效避免嵌套循环导入。
公共的(public) 实例变量可以在类的内部和外部操作。
受保护的(protected)实例变量只能在该类的内部及其子类中进行操作
私有的(private)实例变量只能在该类的内部操作。
2.修改方法中受保护的实例变量
首先在.m中实现赋值的方法,对实例变量进行赋值,实例变量对象 = 方法中的参数名,然后可以调用此方方法传入参数。
.m中
- (void)fixgAge:(int)age withweight:(int)weight andheight:(int)height{
_age = age;
_weight = weight;
_height = height;
}
.main中
Person *x = [[Person alloc] init];
[x fixgAge:18 withweight:45 andheight:160];
3.使用set和get方法访问
setter 和 getter 方法
在OC里为实例变量赋值的方法为称作 (设置器 )setter.
读取实际变量的方法被称做 (访问器) getter.
setter 的书写格式:- (void)setAge:(int)age;即set加上首字母大写的实例变量名(忽略下划线)
getter 的书写格式:- (int)age;即返回值类型与变量类型一致,方法名与实例变量名相同(忽略下划线)
.h中
- (void)setName:(NSString *)name;
- (NSString *)name;
.m中
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
return _name;
}
4. OC中方法分为两种
.类方法 : 类方法只能类去使用,例如 + (id)alloc;类方法中不能使用实例变量
.实例方法 :只能对象使用,例如 — (void)hello;
- (void)replaceObjectAtIndex:(NSUInteger无符号整型)index withObject:(id)anObject;
( “-” 方法类型标识符)
((void)方法返回值类型)
(repalaceObjectAtIndex:withObject: 方法名)
((NSUInteger),(id) 都是参数类型)
((index)(anObject))参数名字。
方法名是:
删除了类标识符,返回值类型,参数类型,参数名,空格后剩下的就是方法名
类中不能出现同名方法
“:”标识参数,不能省略。有冒号必须有参数
5.#import #include @class的区别
导入头文件,即导入头文件中的内容到当前类
#import "" 导入自定义类,#import <> 导入类库中的头文件。功能类似C语言的include,但是可以避免头文件被重复导入。#import 容易出现循环导入头文件问题。
@class:告诉编译器@class后的字符串作为类名使用,并未导入类的接口内容。
有效避免嵌套循环导入。
相关文章推荐
- 使用Scala的Akka HTTP,Akka Stream和Reactive Mongo建立REST服务
- iptables 状态机制
- 支付宝集成获取私钥与公钥
- 怎样在Cell中使用第三方库加载图片
- 【拔苗计划】linux学习笔记——top命令学习
- codeforces 402B Trees in a Row
- Android笔记(五十三) 利用有道OPENAPI做简单的翻译demo
- Android adb devices显示no permission
- UITableView 使用方法(一) - 创建简单的列表
- 抽签的优化
- HDU 3376 Matrix Again
- 根据余弦定理求出 三点以一点为顶点 形成的夹角
- 《现代操作系统》读书笔记---死锁篇
- Tomcat缺少服务
- [LeetCode] Ugly Number
- DirectX学习笔记_关于Sprite.Draw2D的说明
- OC 类 和 对象
- 通过ab测试抗压能力 和 添加索引来增加搜索 能力
- tiny6410nfs挂载问题
- linux 获取经过N层Nginx转发的访问来源真实IP