A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SailY 中级黑马   /  2014-9-9 21:56  /  1838 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天是复习的第二天,感觉复习比看视屏、敲代码累得多的多。首先说说我怎么复习的把,由于看基础视屏的时候没有总结,所以现在复习很悲剧,终于尝到恶果了,所以我又把视频大概的看了一遍,没印象的、不懂的就没跳着看了,然后把所有的知识点写下,不懂、记得不全的百度补充。毕竟没开发经验,所以第二次看视频,还是收获很多的。




构造方法:用来初始化对象的方法,是个对象方法(或者说实例方法),以 - 开头
重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值

重写构造方法的注意点:
1. 先调用父类的构造方法 [super init]
2. 再进行子类内部成员变量的初始化

main.h
#import<Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"

int main()
{

//    Person *p = [Person new];
//    完整的创建一个可用的对象
//     1. 分配存储空间 +alloc
//     2. 初始化 -init
//     
//     1.调用+alloc分配存储空间
//     Person *p1 = [Person alloc];
//     2.调用-init进行初始化
//    Person *p2 = [p1 init];


    Student *stu = [[Student alloc]init];

    NSLog(@"%d---%d",stu.age,stu.no);

    return 0;
}


Person.m
#import "Person.h"
#import "Student.h"
@implementation Person
- (id)init
{
    // 1.一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性
    // 当前对象self,[super init]返回的不一定是self,重新赋值,严谨些
//    self = [super init];放在一起了

    // 2.如果对象初始化成功,才有必要进行接下来的初始化
    if (self = [super init]) {
        _age = 10;
    }

    // 3.返回一个已经初始化完毕的对象
    return self;
}
@end


Student.m
#import "Student.h"

@implementation Student

// 学生对象初始化完毕后,年龄就是10,学号就是1
- (id)init
{
    if (self = [super init]) {
//        _age = 10;写了也白写,没权利赋值
        _no = 1;

    }
    return self;
}


@end



自定义构造方法的规范
1. 一定是对象方法,一定以 - 开头
2. 返回值一般是id类型
3. 方法名一般以initWith开头
例如:
@implementation Person

- (id)initWithAge:(int)age
{

    if (self = [super init]) {
        _age = age;
    }

    return self;
}
@end

在main.m文件中:
Person *p = [[Person alloc]initWithAge:20];

遵循的原则:父类的属性交给父类方法去处理,子类方法处理子类自己的属性
当父类中的成员变量名字修改了的时候,子类可以不做任何修改。

类方法:[Person personWithAge:20];然后在类方法里return[[Person alloc]initWithAge:20],类方法里调用对象方法,也就是这里的自定义的构造方法。



9 个回复

倒序浏览
我也是 光看视频了 没有总结
回复 使用道具 举报
这种情况很正常
回复 使用道具 举报
加油,我也在开始记
回复 使用道具 举报
这是大家的通病啊
回复 使用道具 举报
王路强 发表于 2014-9-9 22:54
我也是 光看视频了 没有总结

怎么跟我大学寝室的背景差不多的
回复 使用道具 举报
SailY 发表于 2014-9-10 10:56
怎么跟我大学寝室的背景差不多的

这就是在宿舍照的   去年的照片了
回复 使用道具 举报
第一次可能的时候 基本上没人总结吧
回复 使用道具 举报 1 0
加油!注意foundation框架
回复 使用道具 举报
加油!类和foundation加强
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马