第04天OC语言(12):自定义构造方法在继承中的表现

  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

在继承中,在父类的基础上,扩展的构造方法

学习前:你必须会什么?

什么是继承,什么是自定义构造方法
继承:只要 A类继承了B类, 那么 B类 就拥有了 A类的所有属性 和方法
自定义构造方法:其实就是自定义一个init方法


一、本章笔记

二、code
main.m
#pragma mark 12-自定义构造方法在继承中的表现
#pragma mark 概念

#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类


#import "Student.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    
//    Student *s = [[Student alloc]initWithAge:33 andName:@"lyh"];
    Student *s = [[Student alloc]initWithAge:33 andName:@"lyh" andNo:1];

    NSLog(@"%@",s);
    
    return 0;
}

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

@interface Person : NSObject

@property int age;
@property NSString *name;

- (instancetype)initWithAge:(int)age;
- (instancetype)initWithName:(NSString *)name;
- (instancetype)initWithAge:(int)age andName:(NSString *)name;

@end

>>>.m
#import "Person.h"

@implementation Person

- (instancetype)init
{
    if (self = [super init]) {
        _age = 10;
    }
    return self;
}

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

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

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

- (NSString *)description
{
    return [NSString stringWithFormat:@" age = %i , name = %@",_age,_name];
}

@end

Student
>>>.h�
#import "Person.h"

@interface Student : Person

@property int no; // 学号
- (instancetype)initWithAge:(int)age andName:(NSString *)name andNo:(int)no;

@end
>>>.m
#import "Student.h"

@implementation Student

- (instancetype)initWithAge:(int)age andName:(NSString *)name andNo:(int)no
{
    /*
    if (self = [super init]) {
//        _age = age; // 父类的属性不能使用 _去访问
        // 狗拿耗子 多管闲事
        // 自己的事情自己做
        [self setAge:age];
        [self setName:name];
        _no = no;
    }
     */
    
    if (self = [super initWithAge:age andName:name]) {
        _no = no;
    }
    return self;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@" age = %i , name = %@ no = %i",[self age],[self name],_no];
}
@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,462评论 18 399
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,108评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,801评论 0 4
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 5,278评论 2 4
  • 曾经,80、90后的我们被贴上“自私”、“叛逆”、“脑残”、“非主流”等标签,经过时间洗礼,身上的孩子气早已褪尽,...
    大晶2018阅读 1,441评论 4 1

友情链接更多精彩内容