zoukankan      html  css  js  c++  java
  • OC学习笔记 自定义构造方法扩展

    将子类父类方法初始化

    父类定义

    #import <Foundation/Foundation.h>
    
    @interface Person :NSObject
    @property NSString *name;
    @property int age;
    - (id)initWithAge :(NSString *)name andAge:(int) age;
    
    @end

    父类实现

    #import "Person.h"
    
    @implementation Person : NSObject
    - (id)initWithAge:(NSString *)name andAge:(int)age
    {
        if(self = [super init])
        {
            _name = name;
            _age = age;
        }
        return self;
    }
    @end

    子类定义

    #import "Person.h"
    
    @interface Student :Person
    @property double no;
    - (id)initWithNo :(NSString *)name andAge :(int)age andNo :(double)no;
    @end

    子类实现

    #import "Student.h"
    
    @implementation Student : Person
    // 父类的属性交给父类方法去处理,子类属性交给子类方法去处理
    - (id)initWithNo:(NSString *)name andAge:(int)age andNo:(double)no
    {
        if(self = [super initWithAge:name andAge:age]) // 将继承父类属性age name传递到父类去初始化
        {
            _no = no; // 只关注并返回子类自己独有属性 自己搞自己东西
        }
        return self;
    }
    @end

    main

     1 #import "Person.h"
     2 #import "Student.h"
     3 
     4 int main() {
     5   Person *p = [[Person alloc]initWithAge:@"大杰加油 上海我来了" andAge:28 ];
     6     NSLog(@"%@%d",p.name,p.age);
     7     Student *stu = [[Student alloc]initWithNo:@"一刻都不敢听曲,一刻都不敢看声色犬马,一刻都不停止努力" andAge:28 andNo:2015.0424 ];
     8     NSLog(@"%@%d%.4f",stu.name,stu.age,stu.no);
     9     return 0;
    10 }

    打印输出:

    2015-04-24 10:32:09.402 构造函数[716:33731] 大杰加油 上海我来了28
    2015-04-24 10:32:09.405 构造函数[716:33731] 一刻都不敢听曲,一刻都不敢看声色犬马,一刻都不停止努力282015.0424
    Program ended with exit code: 0

    总结

    这样做好处就是 后期项目扩展 修改父类属性结构 子类不需要修改原有方法 便于扩展

    init 方法 设计原则就是用来初始化成员变量。

  • 相关阅读:
    Scala篇:Scala环境及IDEA配置
    大数据篇:Hive
    大数据篇:Flume
    大数据篇:Kafka
    15.百万考生成绩如何排序
    Tomcat 架构原理解析到架构设计借鉴
    服务设计思考:平台化
    Druid:通过 Kafka 加载流数据
    12.分而治之-归并排序
    11.经典O(n²)比较型排序算法
  • 原文地址:https://www.cnblogs.com/zhangdashao/p/4452308.html
Copyright © 2011-2022 走看看