Object-c------自定义构造方法

main.m

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

int main(int argc, const char * argv[]) {
    @autoreleasepool {
    Person *p = [[Person alloc] initWithName:@"jack"];
        Person *p1 = [[Person alloc] initWithName:@"rose" andAge: 20];

        Student *s = [[Student alloc] initWithNo:1];
        Student *s1 = [[Student alloc] initWithName: @"jim" andAge:20 andNo:10];

        NSLog(@"-----%@",[s1 name]);

    }
    return 0;
}

Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property int age;
@property NSString *name;

/*
 自定义构造方法
 1. 一定是对象方法,一定以 - 开头
 2. 返回值一般是instancetype类型
 3. 方法名一半以init开头
*/

- (instancetype)initWithName: (NSString *) name;
- (instancetype)initWithAge: (int) age;
- (instancetype)initWithName: (NSString *) name andAge: (int)age;
@end

Person.m

#import "Person.h"

@implementation Person

- (instancetype)init
{

    if( self = [super init] )
    {
        _name = @"jack";
    }

    return self;
}


- (instancetype)initWithName:(NSString *)name
{

    if( self = [super init] )
    {
        _name = name;
    }

    return self;
}

- (instancetype)initWithAge:(int)age
{
    if( self = [super init] )
    {
        _age = age;
    }

    return self;
}

- (instancetype)initWithName:(NSString *)name andAge:(int)age
{
    if( self = [super init] )
    {
        _name = name;
        _age = age;
    }

    return self;
}

@end

Student.h

#import "Person.h"

@interface Student : Person
@property int no;

- (instancetype)initWithNo: (int)no;
- (instancetype)initWithName: (NSString *)name andAge: (int)age andNo: (int)no;
@end

Student.m

#import "Student.h"

@implementation Student

- (instancetype)initWithNo:(int)no
{
    if( self = [super init] )
    {
        _no = no;
    }

    return self;
}

//- (instancetype)initWithName:(NSString *)name andAge:(int)age andNo:(int)no
//{
//    if( self = [super init] )
//    {
//        _no = no;
//        self.age = age;
//        self.name = name;
//        //[self setName:name];
//        //[self setAge:20];
//    }
//    
//    return self;
//}

- (instancetype)initWithName:(NSString *)name andAge:(int)age andNo:(int)no
{
    // 将name、age传递到父类方法中进行初始化
    if(self = [super initWithName:name andAge:age] )
    {
        _no = no;
    }

    return self;
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值