实例变量的可见度---能不能在外界访问。。
@protected (受保护的,默认的)---实例变量只能在该类和其子类内操作
@public =--------实例变量可以在类的外部和内部操作
@private----------实例对象只能在该类内访问
内部是只相应@implementation 和@end 之间 。。。。
为什么不能使用@public
使用@public关键字,暴露类类内部的细节。
不符合面向对象语言的三大特性之一--封装
面向对象三大特性:封装,继承,多态;
类中不能出现同名的方法
- (void)setSex:(NSString *)sex;
int double flout用作参数不用加*(NSInteger NSUInteger CGFloat);
receiver message] 消息机制,,
继承是单向的,不能相互继承。
继承是具有传递性的 ,,,
子类能继承父类全部的特征和行为,
继承的特点
OC中只允许单继承
没有父类单类,称为根类,OC中单根类是NSObject(祖宗)
继承单内容:所有单实例变量和方法
如果子类不满意父类的方法的实现,可以重写父类的方法
self 自身的对象
super 不是父类的对象,而是调用父类的方法,
是编译 器指令,并非对象, 是给super法消息,可以执行父类中实现的方法;
子类可以重写父类方法,即:子类即有自己的实现,又又父类的实现,如果想从父类调用方法,需要用到super发送消息;
初始化过程
执行父类中到初始化方法(向上递归到NSObject类中的初始化方法)
从根类NSObject开始执行初始化方法
判断父类中初始化是否成功,即self是否存在
完成对象的初始化设置,返回对象
初始化子类实例变量
制定初始化
通常把参数最全的初始化方法作为制定初始化方法
制定初始化方法负责向super发送初始化消息
每个类都会有指定的初始化方法
如果每一个类只有一个初始化方法,那它也是指定初始化方法
初始化方法特征
初始化发方是“-”方法
id或者instancetype类型的返回值
以init开头
可以带0到多个参数
内部实现:先执行super到初始化方法,在初始化自身变量,return self;
便利构造器
便利构造器是“+“方法,返回本类型 的实例,方法名以类名开头
可以有0到多个参数
内部实现:封装类alloc和初始化方法,使用起来更加简洁。
#import
导入头文件,即:导入文件中的内容到当前类
#import “ ”导入自定义类,#import < >导入类库中的头文件
功能类似C语言中的#include,但是可以避免头文件被重复导入
容易出现循环导入问题
@class
告诉编译器@class后的字符串作为类名使用,并未导入类的接口内容
有效避免嵌套循环导入
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。