• 5--OC--构造方法



    //  Created by Stephen on 16/3/2.
    //  Copyright © 2016年 Stephen. All rights reserved.
    //
    // 回顾上一章节Person 类的 set 和 get 方法 现在我们自己来写一个构造方法,来实现初始化的时候 Person 类的两个私有变量可以被赋值

    Person.h

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        int _age;
        int _height;
    }
    
    -(id)initWithAge:(int)age andHeight:(int)height; // 自定义的构造方法,是一个动态方法
    
    - (void)showInfo;
    
    @end

    Person.m

    //  Created by Stephen on 16/3/2.
    //  Copyright © 2016年 Stephen. All rights reserved.
    //
    
    #import "Person.h"
    
    @implementation Person
    
    // 实现自定义的构造方法
    
    -(id)initWithAge:(int)age andHeight:(int)height  // id 类型也是约定俗成的
    {
        
    //先从父类那初始化 固定模板
        self = [super init];
        if(self !=nil){
        
            _age = age;
            _height = height;
         }
    
        return self;
        
    }
    
    -(void) showInfo{
               NSLog(@"name is %d and age is %d",_age, _height);
       }
        
    @end

    这里我们看到了,初始化方法返回的类型是id类型,关于OC中的id类型,可以认为和C语言中的void*是相等的,这种类型在OC中经常被用到,还有就是self关键字的使用,这里的self关键字就相当于Java中的this关键字,指代当前类对象,还有super关键字,这个和Java中的super也是一样的,指代父类对象。还有一个是nil,他就相当于Java中的null,空对象的概念,用于判断的。

    同时这里还要记住一点:

    以后OC中自定义初始化的方法的模板:

    1. //固定写法,可以背下来哦~~  
    2. //调用父类的初始化方法  
    3. self = [super init];  
    4. if(self != nil){  
    5.     _name = name;  
    6.     _age = age;  
    7. }    
    8. return self;  

    这个没什么好说的,就是一个模板,所以初学者就背下来吧,不过用多了,自然就记住了。

    main.m

    //
    //
    //  Created by Stephen on 16/3/2.
    //  Copyright © 2016年 Stephen. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // Person *person = [[Person alloc]init];
            //person.age = 20;
            //person.height = 50;
                   
            Person *person =[[Person alloc]initWithAge:20 andHeight:180];
            
            [person showInfo];
            
           //NSLog(@"age = d% height = d%",person.age , person.height);
        }
        return 0;
    }
    

    运行结果:

    2016-03-02 22:23:17.656 4.构造方法[1723:45115] name is 20 and age is 180
    Program ended with exit code: 0

  • 相关阅读:
    arcgis10安装及破解
    11G在用EXP导出时,空表不能导出
    cmd 中键入netstat,net等出现不是内部或外部命令,也不是可运行的程序或批处理文件
    Could not load file or assembly or one of its dependencies. 试图加载格式不正确的程序。
    Spark读写Hbase的二种方式对比
    Handler系列之原理分析
    虚拟目录webconfig的配置
    Smarty的基本使用与总结
    浅谈WEB前后端分离
    学习笔记之MVC级联及Ajax操作
  • 原文地址:https://www.cnblogs.com/stephenmc/p/5236785.html
Copyright © 2020-2023  润新知