//版本1
//- (id)init
//{
//    work = @"工作";
//    return self;
//}
//
//    //版本2:调用父类的init方法,为父类的实例变量赋初值
//- (id)init
//{
//    [super init];
//    work = @"工作";
//    return self;
//}
//
//    //版本3:出于安全考虑,判断父类是否初始化成功,如果父类初始化成功,,在初始子类
//- (id)init
//{
//    self = [super init];
//    if (self != nil) {
//        work = @"工作";
//    }
//    return self;
//}

//版本4 代码优化
//- (id)init
//{
//    self = [super init];
//    if (self) {
//        work = @"工作";
//    }
//    return self;
//}

//版本5:优化代码
//- (id)init
//{
//    if (self = [super init]) {
//        work = @"工作";
//    }
//    return self;
//}

//初始化方法
    //1.返回值类型为id
    //2.方法名一般以init开头
    //3.

//重写系统方法
 - (id)init
 {
     self = [super init];//调用父类初始化
     if (self) {  //判断父类是否初始化成功
         work = @"工作";//给实例变量赋初值
     }
 return self;//最终返回self
}

@interface Student : NSObject
{
    NSString *name;
    NSInteger number;
    CGFloat score;
}
    //自定义初始化方法
    //解决的问题:把初始化和实例变量的赋值,结合在一起
    //1.实例方法(-)
    //2.返回值类型为id
    //3.方法以init开头
- (id)initWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore;
- (id)initWithName:(NSString *)aName;

//便利构造器
    //解决问题:把对象的创建和实例变量的赋值,结合在一起
    //1.类方法(+)
    //2.返回值类型为当前类(Student *)
    //3.方法以当前类名开头(student)
+ (Student *)studentWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore;

+ (Student *)studentWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore
{
    
        //1
//    Student *student = [[Student alloc] init];
//    [student setName:aName];
//    [student setNumber:aNumber];
//    [student setScore:aScore];
//    return student;
    
        //2
//    Student *student = [[Student alloc] initWithName:aName number:aNumber score:aScore];
//    return student;
    
    
        //3
    return [[Student alloc] initWithName:aName number:aNumber score:aScore];
}

 

Object_C初始化方法, 遍历构造器的更多相关文章

  1. OC基础:继承.初始化方法,便利构造器 分类: ios学习 OC 2015-06-16 19:27 84人阅读 评论(0) 收藏

    继承: 1.单向继承,一个类只能有一个父类,一个父类可以有多个子类. 2.单向继承,基类(根类)是OSObject 3.子类可以继承父类的属性和方法 当父类的方法不满足子类的需求时,子类可以重写父类的 ...

  2. OC:继承、初始化方法、便利构造器

    A继承 的作用就是为了,节省代码.     继承 :子类会继承父类 里面所有的内容     思想 :凡是继承过来的实例变量和方法 都是自己的(是从父类遗传过来的)     继承的使用场景 : 当我们多 ...

  3. 初始化方法,init,构造器

    1.继承于NSObject class student: NSObject { var name : String? var age : Int = var friend : Int = init(n ...

  4. Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)

    原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...

  5. 静态工厂方法VS构造器

    我之前已经介绍过关于构建者模式(Builder Pattern)的一些内容,它是一种很有用的模式用于实例化包含几个属性(可选的)的类,带来的好处是更容易读.写及维护客户端代码.今天,我将继续介绍对象创 ...

  6. oc实例变量初始化方法

    1 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx 2 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx3 使用实例初始化方法 ...

  7. iOS学习之Object-C语言继承和初始化方法

    一.继承 1.面向对象的三大特性:封装,继承,多态.      面向对象提供了继承特性.把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可.继承既能保证类的完整,又能简化代码. ...

  8. CLR类型设计之方法与构造器

    无论学习那门语言都要学习函数体,C#,JAVA,PHP,都会涉及到函数体,而C#的函数体成员并不少,方法和构造器就是函数体成员之一,函数体成员还包括但不限于:方法,属性,构造器,终结器,运算符及索引器 ...

  9. JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

    JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...

随机推荐

  1. jstatd - Virtual Machine jstat Daemon

    jstatd [options] 参数:options 命令行参数,可以按任何顺序,但如果有多余的或者中有互斥的参数,最后制定的那个参数将有优先权 options: -nr 当一个存在的RMI Reg ...

  2. CVE2016-8863libupnp缓冲区溢出漏洞原理分析及Poc

    1.libupnp问题分析: (1)问题简述: 根据客户给出的报告,通过设备安装的libupnp软件版本来判断,存在缓冲区溢出漏洞:CVE-2016-8863. (2)漏洞原理分析: 该漏洞发生在up ...

  3. 如何将Wav文件做到EXE文件里

    1)编写.RC文件 ..RC文件是资源的源文件,编译器也就编译这个文件,生成.RES的资源文件 首先在我们的项目子目录中建立一个纯文本文件,起名叫Sound.rc,文件中 有一行,内容为: SOUND ...

  4. 组队打代码 !!! ——Alpha项目冲刺

    Alpha阶段 - 博客链接合集 队伍名称: 代码那些事儿 学号 姓名 211606320 刘佳 211606313 李佳 211606303 陈水莲 211606302 曾丽丽 211606338 ...

  5. 启用SQL Server 2008的专用管理员连接(DAC)

    参考:http://technet.microsoft.com/zh-cn/library/ms178068(v=SQL.105).aspx 问题: 一个在我们公司实习的DBA向我询问如何开启SQL ...

  6. Mybatis中的N+1问题与延迟加载

    0.什么是N+1问题? 在查询中一下子取出所有属性,就会使数据库多执行几条毫无意义的SQL .实际中不需要把所有信息都加载进来,因为有些信息并不常用,加载它们会多执行几条毫无用处的 SQL,导致数据库 ...

  7. maven项目工程目录约定

    使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下: src/main/java —— 存放项目的.java文件 src/main/resources —— 存放 ...

  8. 【笔记】C#往TextBox的方法AppendText加入的内容里插入换行符

    C# TextBox换行[huan hang]时你往往会想到直接付给一个含有换行[huan hang]符"\n"的字符[zi fu]串[zi fu chuan]给Text属性[sh ...

  9. Django之常用命令以及问题汇总

    基本命令 1.新建一个django项目 django-admin.py startproject project-name 2.新建一个app python manage.py startapp ap ...

  10. Pycharm及python安装详细教程

    首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载. 2. ...