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 方法 设计原则就是用来初始化成员变量。

  • 相关阅读:
    错误记录 git pull
    关于file_operations结构体
    20180911-Java实例01
    20180910-Java 文档注释
    20180907-Java Applet基础
    Elastic Stack生态圈
    关于我和本博客
    雨后的春日清晨
    charles 安装https证书
    css3不同文字大小底部对齐的完美解决方案
  • 原文地址:https://www.cnblogs.com/zhangdashao/p/4452308.html
Copyright © 2011-2022 走看看