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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangchao1992 中级黑马   /  2015-8-17 20:31  /  371 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangchao1992 于 2015-8-19 15:02 编辑

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

Person *p = [Person new];
创建一个实例对象, new方法做了三件事情。
       1、使用alloc申请空间
       2、使用init初始化
       3、返回对象的首地址

注意:[Person new];  == [[Person alloc] init];
          [Person alloc] 的时候,内存已经被清0
           init是对象方法,该方法返回一个对象,
重写构造方法示例
Student类继承了 Person
#import "Person.h"
@interface Student : Person
{
    @public
    int _sno;
}
@end
#import "Student.h"
Student 的实现
@implementation Student
-(instancetype)init{
    //1、初始化父类
    //2、判断是否初始化成功
    if(self = [super init]){
    _sno = 1;
    //3、初始化当前类的实例变量
    }
    //4、return self;

    return self;
}
@end
自定义构造方法
      书写规范
       (1)一定是对象方法,以减号开头
        (2)返回值一般是id类型
         (3)方法名一般以initWith开头
自定义和其他方法一样,实现之前必须在  .h  文件中声明。

Student继承自 Person类
  Student比Person多个实例变量 _sno
@implementation Student
//Student自定义构造方法实现
-(instancetype)initWithName:(NSString *)name andAge:(int)age andSNO:(int)sno{
    if (self = [super initWithName:name andAge:age]) {
        //初始化学号
        _sno = sno;   
    }

    return self;
}
@end
创建学生的对象
       Student *stu = [[Student alloc] initWithName:@"张无忌" andAge:38 andSNO:438];

Person类 有两个实例变量  _name 和 _age

@implementation Person
//Person的自定义构造方法实现
-(instancetype)initWithName:(NSString *)name andAge:(int)age{
    if (self = [super init]) {
        _name = name;
        _age = age;
    }
    return self;
}
@end
创建人的对象
  Person *p1 = [[Person alloc] initWithName:@"张三丰" andAge:19];

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马