zoukankan      html  css  js  c++  java
  • 深入地学习OC(2)

    今天我想写的是关于构造函数的知识

    首先先明白以init 开头的都是构造函数,重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

    重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名, 但是参数却不相同,方法体也不相同。最想见的重载的例子就是类的构造函数,

    //自定义构造函数

    //-(id)init

    -(id)intWithAge:(NSInteger)newAge andName:(NSString *)newName;

     1 -(id)init{
     2 self=[super init];//父类调用自身init方法,赋值给self,即classD本身的对象
     3 if(self){
     4 //此部分做所有的初始化工作
     5  self.age=0;
     6 self.name=@"hhh";
     7 }
     8 return self;//返回初始化完成的对象本身
     9 }
    10 -(id)initWithAge:(NSInteger)newAge andName:(NSString *)newName{
    11 self=[super init];
    12 if(self){
    13 self.age=newAge;//形参newAge接受外部实参的值,赋值给属性age
    14 self.name=newName;//形参newAge接受外部实参的值,赋值给属性name
    15 }
    16 return self;
    17 }

    上面的代码是在方法里面实现的,这里在主函数里面调用的话就要这样子写

    ClassD *obj4=[[ClassD alloc]init];
    
                /**这里调用的init方法,会优先在ClassD中找,如果找不到,往父类中找,找到的话,则优先调用自己类中的init,其它函数亦如此**/
    
                NSLog(@"obj4.age = %ld,obj4.name = %@",obj4.age,obj4.name);
    
                
    
                
    
                ClassD *obj5=[[ClassD alloc]initWithAge:25 andName:@"Tom"];
    
                /**在给对象初始化的工作中,直接完成参数的传递,对象会调用自己的自定义初始化函数,将实参的值传递给形参,形参再赋值给属性(见方法的实现部分)**/
    
                NSLog(@"obj5.age = %ld,obj5.name = %@",obj5.age,obj5.name);
    
     
  • 相关阅读:
    POJ
    HDU
    Python之列表
    列表、元组、字典总结
    Python之列表、原组、字典总结
    [P1082][NOIP2012] 同余方程 (扩展欧几里得/乘法逆元)
    [P3957][NOIP2017]跳房子 (DP+二分/队列?)
    [Codeforces896C] Willem, Chtholly and Seniorious (ODT-珂朵莉树)
    [P1005][NOIP2007] 矩阵取数游戏 (DP+高精)
    [POJ1006]生理周期 (中国剩余定理)
  • 原文地址:https://www.cnblogs.com/canfeng/p/4924317.html
Copyright © 2011-2022 走看看