5--OC--构造方法
// Created by Stephen on 16/3/2.
// Copyright © 2016年 Stephen. All rights reserved.
//
// 回顾上一章节Person 类的 set 和 get 方法 现在我们自己来写一个构造方法,来实现初始化的时候 Person 类的两个私有变量可以被赋值
Person.h
- #import <Foundation/Foundation.h>
- @interface Person : NSObject
- {
- int _age;
- int _height;
- }
- -(id)initWithAge:(int)age andHeight:(int)height; // 自定义的构造方法,是一个动态方法
- - (void)showInfo;
- @end
Person.m
- // Created by Stephen on 16/3/2.
- // Copyright © 2016年 Stephen. All rights reserved.
- //
- #import "Person.h"
- @implementation Person
- // 实现自定义的构造方法
- -(id)initWithAge:(int)age andHeight:(int)height // id 类型也是约定俗成的
- {
- //先从父类那初始化 固定模板
- self = [super init];
- if(self !=nil){
- _age = age;
- _height = height;
- }
- return self;
- }
- -(void) showInfo{
- NSLog(@"name is %d and age is %d",_age, _height);
- }
- @end
这里我们看到了,初始化方法返回的类型是id类型,关于OC中的id类型,可以认为和C语言中的void*是相等的,这种类型在OC中经常被用到,还有就是self关键字的使用,这里的self关键字就相当于Java中的this关键字,指代当前类对象,还有super关键字,这个和Java中的super也是一样的,指代父类对象。还有一个是nil,他就相当于Java中的null,空对象的概念,用于判断的。
同时这里还要记住一点:
以后OC中自定义初始化的方法的模板:
- //固定写法,可以背下来哦~~
- //调用父类的初始化方法
- self = [super init];
- if(self != nil){
- _name = name;
- _age = age;
- }
- return self;
这个没什么好说的,就是一个模板,所以初学者就背下来吧,不过用多了,自然就记住了。
main.m
- //
- //
- // Created by Stephen on 16/3/2.
- // Copyright © 2016年 Stephen. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // Person *person = [[Person alloc]init];
- //person.age = 20;
- //person.height = 50;
- Person *person =[[Person alloc]initWithAge:20 andHeight:180];
- [person showInfo];
- //NSLog(@"age = d% height = d%",person.age , person.height);
- }
- return 0;
- }
运行结果:
2016-03-02 22:23:17.656 4.构造方法[1723:45115] name is 20 and age is 180
Program ended with exit code: 0
5--OC--构造方法的更多相关文章
- OC 构造方法(对象初始化)
一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返 ...
- OC 构造方法
#import <Foundation/Foundation.h> @interface Student : NSObject { int _age; int _no; } - (void ...
- objective-c 语法快速过(4)
oc 里的字符串 字符串的快速创建(最简单的方法) NSStirng *str = @“Hello”;//oc的字符串都是@“”形式的 oc的字符串也是类的对象,是NSString类的对象,创建没有那 ...
- OC基础--构造方法 id类型
new方法实现原理: new做了三件事情 1.开辟存储空间 + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...
- OC 类方法,对象方法,构造方法以及instancetype和id的异同
OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...
- OC语言构造方法
OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...
- OC基础--构造方法
OC语言中类的构造方法学了两种: 一.方法一:[类名 new] 例:[Person new] 缺点:可扩展性不强,假如在Person类中有_age 成员变量,在初始化时想让_age 中的值为20,ne ...
- 李洪强iOS开发之OC语言构造方法
OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...
- OC语法4——自定义构造方法,description方法
自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象. Student * stu = [Student ...
- 「OC」构造方法和分类
一.构造方法 (一)构造方法的调用 创建一个可用的对象:Person *p=[Person new]; new方法实际上是分为两步来创建一个对象: 1)使用+alloc方法来分配存储空间(返回分配的对 ...
随机推荐
- Gentoo本地化设置--Locale系统介绍
locale是什么? 一份Locale是一组信息的集合,大多数程序利用它来确定特定的国家和语言设置.这些locale以及它们包含的数据是系统库的一部分,可以在大多数系统中的/usr/share/loc ...
- linux的pvtrace环境配置
1.查看当前ubuntu版本号 froid@ubuntu:~/Desktop$ lsb_release -aNo LSB modules are available.Distributor ID: ...
- unknow type name 'off64_t'
或者 错误"error: 'off64_t' does not name a type" MinGW的bug,使用-std=c++11, 有可能出现, 修改{MinGW dir} ...
- linux脚本Shell之awk详解(二)
三.printf的使用 print format 生成报表 %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c ...
- Chapter 2 Open Book——15
The rest of the week was uneventful. I got used to the routine of my classes. 这周剩下的时间都是平淡无事的.我就是正常的上 ...
- js 数组切换图片
<html> <head> <meta charset="utf-8" /> <title></title> <s ...
- 图像相似度计算之哈希值方法OpenCV实现
http://blog.csdn.net/fengbingchun/article/details/42153261 图像相似度计算之哈希值方法OpenCV实现 2014-12-25 21:27 29 ...
- MVC中用 BundleCollection 压缩CSS时图片路径问题
MVC中有个专门提供JS和CSS压缩的类,BundleCollection,其实这个类也可以在asp.net中用, 关于BundleCollection类的详细推荐个地址:http://www.cnb ...
- set集合容器
set集合容器几条特点 1.它不会重复插入相同键值的元素,而采取忽略处理 2.使用中序遍历算法,检索效率高于vector.deque.list容器,在插入元素时,会自动将元素按键值从小到大排列 3 ...
- ios layer 动画
#import "ViewController.h" @interface ViewController (){ CALayer *_l1;//定义能够全局使用 CAL ...