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后的字符串作为类名使用,并未导入类的接口内容。
有效避免嵌套循环导入。