我们都知道,在java开发中中经常要用到构造函数和toString()方法,构造方法主要是用于对象的初始化,toString()输出对象字符串的方法则在程序调试中也是必不可少的,那么在object-c开发中,我们该如何来定义object-c的构造函数方法和输出对象字符串的description方法呢?下面来分别看一看这两个方法的使用。
内容一:object-c的构造函数使用。
其实我们前面在main函数中有使用过一个构造方法,如init初始化方法,只是这个是无参的构造方法,代码如下。
Student *stu = [[Student alloc] init];
我们要在Student.h什么中定义一个object-c的有参构造方法,然后在Student.m中实现它,并且也要在main函数中使用这个构造方法来创建对象,该怎么做呢?
在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方法的重写我们就将到这里,请学好前面几节,后面的内容就很容易看懂了。