关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

ios入门教程5:object-c构造函数和description方法

IOS admin 浏览 评论

我们都知道,在java开发中中经常要用到构造函数和toString()方法,构造方法主要是用于对象的初始化,toString()输出对象字符串的方法则在程序调试中也是必不可少的,那么在object-c开发中,我们该如何来定义object-c的构造函数方法和输出对象字符串的description方法呢?下面来分别看一看这两个方法的使用。

内容一:object-c的构造函数使用。

其实我们前面在main函数中有使用过一个构造方法,如init初始化方法,只是这个是无参的构造方法,代码如下。

Student *stu = [[Student alloc] init];

我们要在Student.h什么中定义一个object-c的有参构造方法,然后在Student.m中实现它,并且也要在main函数中使用这个构造方法来创建对象,该怎么做呢?

  1. 在Student.h类中申明一个有参构造方法,意思是初始化对象的时候,设置学生对象的年龄和编号,代码如下。

-(id)initWithAge:(int)newAge andNo:(int)newNo;

说明:在Objective-C 中,id类型是一个独特的数据类型。在概念上,类似Java的Object 类,可以转换为任何数据类型。换句话说,id类型的变量可以存放任何数据类型的对象。initWithAge:andNo:这两个参数的方法名称并不是固定的,可以随意取。

2.在Student.m中实现Student.h中申明的构造函数,代码如下。

-(id)initWithAge:(int)newAge andNo:(int)newNo{
    //返回对象本身self
    self = [super init];
    //如果self不为null,则给年龄和编号设置值
    if(self){
        self.age = newAge;
        self.no = newNo;
    }
    return self;
}

3.在main函数中使用object-c构造函数,给学生年龄和编号赋值。

#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建Student学生类的对象
        Student *stu = [[Student alloc] initWithAge:130 andNo:20];
        //get方法获取年龄
        int age = stu.age;
        //get方法获取编号
        int no = stu.no;
        NSLog(@"年龄是:%d,编号是:%d",age,no);
    }
    return 0;
}

输出结果为:

年龄是:130,编号是:20

内容二:object-c description输出对象字符串方法的使用。

1.我们先在main函数中直接输出对象,看看输出结果是什么,main函数的代码如下。

#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建Student学生类的对象
        Student *stu = [[Student alloc] initWithAge:130 andNo:20];
        NSLog(@"%@",stu);
    }
    return 0;
}

说明:%@的是输出Student对象的意思,输出的结果是对象的内存地址。

 <Student: 0x100113d20>

2.下面我们就开始使用object-c 自带的方法description,定义了此方法之后,当NSLog输出对象的时候,它就会自动去调用Student.m中实现的description方法,跟java语言中的toString方法类似,实现代码如下。

-(NSString *)description{
 NSString *str = [NSString stringWithFormat:@"年龄是:%d,编号是:%d",age,no];
 return str;
}

说明:%d为int类型返回值的占位符,NSString *为字符串类型的返回值,stringWithFormat为NSString类里面的静态方法,所以可以直接用NSString调用。

经过我们重写了description方法之后,在使用上面main函数输出对象的时候,输出的结果就变成了字符串了,结果为。

年龄是:130,编号是:20

object-c构造函数和description方法的重写我们就将到这里,请学好前面几节,后面的内容就很容易看懂了。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/object-c_ios/2017/0131/51.html

    与本文相关的文章