实例变量可见度(提高程序的安全性)
所有的面向对象语言都有可见度的
常见的有三种(实例对象的方法中,也就是说在 - 号方法中才行)
Public (公有的) 实例变量可以在类的外部和内部操作
Protected(受保护的,默认的) 实例变量只能在该类和其子类操作
private(私有的) 实例对象只能在该类内访问
在oc的面向对象语言里,所有的实例变量默认的可见度都是被保护类型的
//被保护类型的实例变量可以在本类实现文件的范围内进行赋值
@interface Person : NSObject
//无参无返回值方法
-(void)say;
//有一个参数无返回值方法
-(void)say:(NSString *)content;
//有两个参数无返回值的方法
-(void)say:(NSString *)content :(NSString *)title;
//有两个参数无返回值的方法
-(void)say:(NSString *)content withTitle :(NSString *)title;
//有三个参数无返回值的方法
-(void)say:(NSString *)content :(NSString *)title :(NSString *)date;
@end
/*方法名
1
@selector(say)
2
@selector(say:)
3
@selector(say::)
4
@selector(say:withTitle:)
5
@selector(say:::)
*/
具有继承关系的两个类 ,子类可以拥有父类的一切,(包括他的实例变量和行为)(除了父类中的私有变量和私有方法 在oc中不存在)
实例变量是实例对象的成员变量
方法
类方法一定是便利构造器,构造器不一定是类方法
类方法不能使用实例变量
@interface Person : NSObject
//无参无返回值方法
-(void)say;
//有一个参数无返回值方法
-(void)say:(NSString *)content;
//有两个参数无返回值的方法
-(void)say:(NSString *)content :(NSString *)title;
//有两个参数无返回值的方法
-(void)say:(NSString *)content withTitle :(NSString *)title;
//有三个参数无返回值的方法
-(void)say:(NSString *)content :(NSString *)title :(NSString *)date;
@end
/*方法名
1
@selector(say)
2
@selector(say:)
3
@selector(say::)
4
@selector(say:withTitle:)
5
@selector(say:::)
*/
自定义初始方法(声明)
1, 必须是 - 号方法
2,返回值类型是 instancetype/id
3,必须的init开头
自定义初始方法(实现)
1,必须有大括号
2,一定有return self;
3,self = [super(父类) init];//保证默认值是完整的
-(id)init 这个最简单的初始化方法只能给实例变量设置默认值,不灵活。
-(id)initWithName: 自定义初始化方法,根据需求定义初始化方法
-(id)initWithName: 自定义初始化方法,根据需求定义初始化方法
所有的实例对象只初始化一次,也只销毁一次;