继承详细讲解

super = [Object alloc]   self

Person:Object  要是在 init initWithName 等方法里做一些赋值操作  就需要在方法里加上  if( self = [super init])  因为super = [Object alloc]

 

//  Person.m

#import "Person.h"

@implementation Person
- (id)init
{
    if ( self = [super init] )
    {
        _name = @"Jack";
    }
    return self;
}

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

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

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

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

@end

 

 

//  Person.h

#import <Foundation/Foundation.h>

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

//用 instancetype 更好
- (id)initWithName:(NSString *)name;
- (id)initWithAge:(int)age;
- (id)initWithName:(NSString *)name andAge:(int)age;

@end

 

//  Student.h

#import "Person.h"
@interface Student : Person

@property int no;

- (id)initWithNo:(int)no;
- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no;

@end

 

//  Student.m

#import "Student.h"

@implementation Student
- (id)initWithNo:(int)no
{
    if ( self = [super init] )
    {
        _no = no;
    }
    return self;
}

// 父类的属性交给父类方法去处理,子类方法处理子类自己的属性
- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no
{
    // 将name、age传递到父类方法中进行初始化
    if ( self = [super initWithName:name andAge:age])
    {
        _no = no;
    }
    
    return self;
}

 

posted @ 2016-03-19 09:27  海龙王来了  阅读(88)  评论(0)    收藏  举报
友情链接:废钢破碎机  带式压滤机