object-c 子类覆盖父类属性 详解

//
//  main.m
//  test_OC_chind_super_one
//
//  Created by admin on 1/7/16.
//  Copyright © 2016 jeffasd. All rights reserved.
//

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

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    
    Student *student = [Student new];
    
    NSString *string = student.name;
    
    student.identifier = @"set identifier";
    
    NSLog(@"the student identifier is %@", student.identifier);
    
    NSLog(@"the string is %@", string);
    
//    student.name = @"987";
    
    return 0;
}

//
//  Person.h
//  test_OC_chind_super_one
//
//  Created by admin on 1/7/16.
//  Copyright © 2016 jeffasd. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property(nonatomic, copy)NSString *identifier;

@end

//
//  Person.m
//  test_OC_chind_super_one
//
//  Created by admin on 1/7/16.
//  Copyright © 2016 jeffasd. All rights reserved.
//

#import "Person.h"

@implementation Person

- (instancetype)init
{
    self = [super init];
    if (self != nil) {
        _identifier = @"12";
    }
    return self;
}

@end

//
//  Student.h
//  test_OC_chind_super_one
//
//  Created by admin on 1/7/16.
//  Copyright © 2016 jeffasd. All rights reserved.
//

#import "Person.h"

@interface Student : Person

@property(nonatomic, copy)NSString *identifier;

@property(nonatomic, readonly)NSString *name;

@end

//
//  Student.m
//  test_OC_chind_super_one
//
//  Created by admin on 1/7/16.
//  Copyright © 2016 jeffasd. All rights reserved.
//

#import "Student.h"

@implementation Student

@synthesize identifier = _identifier;

//@dynamic identifier;    //使用@dynamic后必须要自己实现getter和setter方法

- (instancetype)init
{
    self = [super init];
    if (self != nil) {
//        [self setName:@"456"];
        self.name = @"456";
    }
    return self;
}

//- (NSString *)identifier
//{
//    return @"3";
//}

//- (NSString *)name
//{
//    return
//}

- (void)setName:(NSString *)name
{
    _name = name;
}

//- (void)setIdentifier:(NSString *)identifier
//{
//    [super setIdentifier:identifier];
//    
//    
//}

- (void)setIdentifier:(NSString *)identifier
{
    [super setIdentifier:identifier];
//    _identifier = @"set identifier";
    _identifier = identifier;
}

@end

2016-01-07 13:18:11.967 test_OC_chind_super_one[2002:51547] Hello, World!

2016-01-07 13:18:11.968 test_OC_chind_super_one[2002:51547] the student identifier is set identifier

2016-01-07 13:18:11.969 test_OC_chind_super_one[2002:51547] the string is 456

Program ended with exit code: 0


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值