OC语法4——自定义构造方法,description方法
自定义构造方法:
我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象。
Student * stu = [Student alloc];
stu = [stu init];
在这里,init方法是系统原始的初始化方法,但有时我们需要重写该初始化方法,使其在创建该对象的同时赋予它属性的值。
假如,我们现在要重写原始初始化方法,使其创建一个有年龄(age)的stu。
首先,在Student.h中声明自定义方法:
- (id)initWithAge:(int)age;
然后,在Student.m中实现该自定义方法:
- (id)initWithAge:(int)age {
self = [super init]; //先调用父类的初始化方法,初始化父类
if (self != nil) { //若父类初始化成功,则开始初始化当前对象stu
_age = age;
}
return self;
}
注意:构造方法内部首先要调用父类的初始化方法(先把父类的某些东西实现初始化)。若父类初始化成功,则开始初始化当前对象stu(即给stu的属性_age赋值)。
description方法:
我们从打印方法说起。
无论是什么语言的打印方法,都是既可以打印基本类型数据,也可以打印对象。例如:
Student *stu = [[Student alloc] initWithAge:]; NSLog(@"%@", stu); [stu release];
注意:
NSLog(@"%@");
NSLog()是OC的打印方法。
OC的字符串前面要加@,例:@"wanger";
占位符%@表示对象。
上面的运行结果,打印出来是: <Student: 0x100109910>。
当要打印一个对象时,会自动调用这个对象的description方法,该方法的返回值是字符串类型的,返回的该字符串里有类名和对象地址的信息(<Student:ox100109910>)。
也就是说原始的description方法的作用是返回一个包含类名和对象地址两个信息的字符串。有时我们并不关心类名和地址,它的实际意义不大,所以有时候需要我们重写该description方法,使其返回对我们更有意义的该对象信息字符串。
假如,我们重写该description方法,使其只返回该对象的age
- (NSString *)description {
return [NSString stringWithFormat:@"age=%i", _age]; //调用NSString的静态方法stringWithFormmat:,传入_age创建一个字符串,并返回。
}
打印结果为:age = 10
注意:
其实OC里的description方法等同于Java里的toString()方法。它们的作用都是返回该类对象信息的字符串!我们可以根据需要重写它们,使其返回对我们有意义的数据。
OC语法4——自定义构造方法,description方法的更多相关文章
- 让LINQ中的查询语法使用自定义的查询方法
使用LINQ时有两种查询语法:查询语法和方法语法 查询语法:一种类似 SQL 语法的查询方式 方法语法:通过扩展方法和Lambda表达式来创建查询 例如: List<, , , }; //查询语 ...
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- 六.OC基础--1. id和instancetype类型,2.动态类型检测,3.响应方法,构造方法,4.重写构造方法,5.自定义构造方法
1. id和instancetype类型, id和instancetype类型区别: 1. id和instancetype都可以用来作为方法的返回值 2. id可以用来定义类型,instancetyp ...
- 【Objective-C】2.自定义构造方法和description方法
1.Student.h 1 #import <Foundation/Foundation.h> 2 3 @interface Student : NSObject { 4 int _age ...
- 自定义构造方法和description方法
知识回顾在第5讲中已经介绍了如何定义类和创建并初始化对象,比如有Student这个类1.Student.h 1 #import <Foundation/Foundation.h>23@in ...
- 自定义构造、description方法、SEL
[Objective-C]07-自定义构造方法和description方法 // 构造方法:用来初始化对象的方法,是个对象方法,”-"开头// 重写构造方法的目的:为了让对象创建出来,成 ...
- OC 初识NSString,self关键字,继承,成员变量的可见性,description方法
OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符 ...
- OC基础--description方法
PS:经过之类重写description方法后,个人感觉有点像C#中的ToString();方法 一.description方法的作用:(输出所有的OC对象都用%@) 1.默认情况下(不重写descr ...
- OC语法2——OC的类,方法,成员变量的创建
类的创建: 与Java不同的是,OC创建一个类需要两个文件(.h和.m文件) 1> xxx.h:声明文件.用于声明成员变量和方法.关键字@interface和@end成对使用. 声明文件只是声明 ...
随机推荐
- Data Recovery Advisor (DRA)
数据恢复指导Data Recovery Advisor (DRA)的适用场景:Data Recovery Advisor 是11g 新特性,是Oracle 顾问程序架构的一部分,它会在遇到错误时自动收 ...
- Linq 中的Select事例
---恢复内容开始--- 1.对查询结果进行转换. string[] names={"ADE","Jerry","Steves"}; var ...
- css系列教程--选择器
css派生选择器:是指在某个样式表或者dom元素的行内定义行内元素的属性,而其他同名样式在其他dom节点无效的样式表定义方式.例如:div ul li{border:1px solid red;}&l ...
- XPath在asp.net中查询XML
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- iOS集成支付宝
需要企业和支付宝签约这个是需要审核的[3天左右 以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...
- Node.js服务的重启与监控
开始:Node +服务文件名 停止:直接快捷键Ctrl+C 监控:1.安装 npm install supervisor -g, 2.supervisor app.js 参考:http://blog. ...
- css单位和值
css需要单位来度量.内含整数.小数.百分数的情况,很多条件下支持正负的情况,当然是有限制的了.百分数基本是相对于自身.或是父或是祖先元素的某个属性值. 颜色 颜色的表示分为:命名颜色 ...
- fragment嵌套,viewpager嵌套 不能正确显示
转帖:http://blog.csdn.net/mybook1122/article/details/24003343 通常为 viewPager.setAdapter(new MyFragmentP ...
- PHP面试题之设计模式
设计模式是技术面试的时候难免会被问到的一个问题,特别会让你举例说明各种设计模式的使用场景. 使用设计模式可以减轻我们的工作量,优化我们的代码. 设计模式非常的多,这里介绍单例模式,工厂模式,组合模式, ...
- Database.SetInitializer的几种参数
一:数据库不存在时重新创建数据库 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testCon ...