您的位置:首页 > 移动开发 > IOS开发

IOS--OC--LessonInherit 遍历构造器 与自定义初始化

2015-06-26 22:17 567 查看
一 继承

1.OC 中得继承特定

/*

1.单向继承,一个子类只能有一个父类,一个父类可以有很多个子类;

2.单根继承:根类(基类)是 NSObject.

3.子类可以继承父类的特征和行为.

*/

2. 建立继承关系之后,子类可以继承父类:

/*

// 1.实例变量,@ public 和@ protect 修饰的

// 2.公开的方法

1⃣ 一个方法如果在*.h 中声明了 那么就是公开的方法

2⃣ 一个方法如果没在*. h 中声明 那么就是私有方法 只有在类的内部访问

3⃣: OC 中么有决定的私有

*/

3.子类调用方法的过程

/*

1.现在本类中寻找方法 如果找到 直接调用

2.没有找到 就在父类中寻找 如果还没找到 就依次向上去父类的父类中找 直到找到

3.还找不到就报错

*/

4.// super :编译指令,用于调用父类的方法

/*

1.完全重写;不调用super 就是完全重写

2.在父类的基础上,添加我们需要的功能,补充功能.(super) 我们使用这个 super 调用父类的方法

3.重写父类的方法,在子类中不需要声明

5.//重写 init 的方法:

/*

1.初始化自己和父类的实例变量赋初始值

缺点 需要关心父类的实例变量 父类太多了 就会很麻烦

- (id) init{
_name = @"" ;
_age = 16;
_weight =70;
_sex = @"男";
_color = @"白色";
return self;
}


2.不考虑父类 只初始化自己的类
缺点 只给本类的的实例变量赋值 从父类继承的实例变量没有得到赋值


- (id) init{
_color = @"白色";
return self;
}


3.初始化时,每个类先通过调用[ super init]调用父类的方法,对父类的实例变量赋值,再对自身的实例变量赋值
理论可行


-(id)init{
[super init];  // error
_color = @"肉色";
return self;

}


4. 使用 self 接收[ super init ]的返回值,然后判断 self 是否为 nil ,如果不为 nil 说明初始化成功 ,在对自身的实例变量进行初始化


- (id) init{
//    1.在对象方法中 self ,指的的就是对象.
//      2.在类中 self 指的就是类
self = [super init];
if (self != nil){
_color = @"粉红";
}return self;
}


5下面两种是不同的形式 都可以使用 看个人爱好 一定要记得最好加上 return self 谁调用 返回谁

- (id)init {

if (self = [super init]) {
_color = @"橘色";
}return self;
}

- (id)init {
self = [super init]
if (self) {
_color = @" 透明";
}return self;
}


二 //遍历构造器

1. /*

1.一定是一个类方法

2.类名(小写)+With+实例变量名(首字母大写) appleWithColor;

3.一定有返回值

4.返回值类型(id ,instancetype);

*/

ps :+(id)appleWithColor:(NSString *)color
kind:(NSString *)kind
price:(CGFloat)price;
上面的遍历的自定义
- (id)initWithColor:(NSString *)color
kind:(NSString *)kind
price:(CGFloat)price{

self = [super init];
if (self) {
_color = color;
_kind  = kind;
_price = price;
}return self;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: