我们都知道,在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方法的重写我们就将到这里,请学好前面几节,后面的内容就很容易看懂了。