实例变量的可见度---能不能在外界访问。。
@protected (受保护的,默认的)---实例变量只能在该类和其子类内操作
@public =--------实例变量可以在类的外部和内部操作
@private----------实例对象只能在该类内访问
内部是只相应@implementation 和@end 之间 。。。。
为什么不能使用@public
使用@public关键字,暴露类类内部的细节。
不符合面向对象语言的三大特性之一--封装
面向对象三大特性:封装,继承,多态;
类中不能出现同名的方法
- (void)setSex:(NSString *)sex;
int double flout用作参数不用加*(NSInteger NSUInteger CGFloat);
receiver message] 消息机制,,
继承是单向的,不能相互继承。
继承是具有传递性的 ,,,
子类能继承父类全部的特征和行为,
继承的特点
self 自身的对象
super 不是父类的对象,而是调用父类的方法,
是编译 器指令,并非对象, 是给super法消息,可以执行父类中实现的方法;
子类可以重写父类方法,即:子类即有自己的实现,又又父类的实现,如果想从父类调用方法,需要用到super发送消息;
初始化过程
执行父类中到初始化方法(向上递归到NSObject类中的初始化方法)
从根类NSObject开始执行初始化方法
判断父类中初始化是否成功,即self是否存在
完成对象的初始化设置,返回对象
初始化子类实例变量
制定初始化
初始化方法特征
初始化发方是“-”方法
id或者instancetype类型的返回值
以init开头
可以带0到多个参数
内部实现:先执行super到初始化方法,在初始化自身变量,return self;
便利构造器
#import
@class