博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC-自定义构造方法
阅读量:6758 次
发布时间:2019-06-26

本文共 2384 字,大约阅读时间需要 7 分钟。

from : http://www.cnblogs.com/wendingding/p/3706883.html

自定义构造方法的规范

(1)一定是对象方法,以减号开头。

(2)返回值一般是 instancetype 类型。

(3)方法名一般以 initWith 开头。

代码实现

////  Person.h//  WDDGouzaofangfaTest////  Created by LiuChanghong on 15/9/25.//  Copyright © 2015年 LiuChanghong. All rights reserved.//#import 
@interface Person : NSObject@property int age;@property (nonatomic,strong)NSString *name;//接收一个参数age的构造方法-(instancetype)initWithAge:(int)age;//接收两个参数age和name的构造方法-(instancetype)initWithAge:(int)age andName:(NSString *)name;@end
Person.h
////  Person.m//  WDDGouzaofangfaTest////  Created by LiuChanghong on 15/9/25.//  Copyright © 2015年 LiuChanghong. All rights reserved.//#import "Person.h"@implementation Person-(instancetype)initWithAge:(int)age{    self = [super init];    if (self) {        _age = age;    }    return self;}-(instancetype)initWithAge:(int)age andName:(NSString *)name{    self = [super init];    if (self) {        _age = age;        _name = name;    }    return self;}@end
Person.m
////  Student.h//  WDDGouzaofangfaTest////  Created by LiuChanghong on 15/9/25.//  Copyright © 2015年 LiuChanghong. All rights reserved.//#import "Person.h"@interface Student : Person@property int number;//接收三个参数的构造方法-(instancetype)initWithAge:(int)age andName:(NSString *)name andNumber:(int)number;@end
Student.h
////  Student.m//  WDDGouzaofangfaTest////  Created by LiuChanghong on 15/9/25.//  Copyright © 2015年 LiuChanghong. All rights reserved.//#import "Student.h"@implementation Student//由于Student类继承自Person类,因此可以直接调用父类Person的构造方法初始化其中两个变量。-(instancetype)initWithAge:(int)age andName:(NSString *)name andNumber:(int)number{        //直接调用父类Person的构造方法初始化其中两个变量。    self = [super initWithAge:age andName:name];    if (self) {        _number = number;    }    return self;}@end
Student.m

测试主程序

////  main.m//  WDDGouzaofangfaTest////  Created by LiuChanghong on 15/9/25.//  Copyright © 2015年 LiuChanghong. All rights reserved.//#import 
#import "Student.h"int main(int argc, const char * argv[]) { @autoreleasepool { Student *student = [[Student alloc]initWithAge:12 andName:@"Mike" andNumber:10086]; NSLog(@"学生的年龄为%d岁,学号为%d,名字为%@",student.age,student.number,student.name); } return 0;}
测试主程序

输出结果

自定义构造方法的使用注意

(1)自己做自己的事情

(2)父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性

转载于:https://www.cnblogs.com/liuchanghong/p/4837936.html

你可能感兴趣的文章
理解WebKit和Chromium: WebKit, WebKit2, Chromium和Chrome介绍
查看>>
hanoi塔的递归算法
查看>>
C# 校验给定的ip地址是否合法
查看>>
lumen 登陆 注册 demo
查看>>
基于服务的并行系统的通讯方式探讨
查看>>
设计模式——观察者模式
查看>>
Python多线程 简明例子
查看>>
《地球上的星星》
查看>>
mysql数据库的主从同步,实现读写分离
查看>>
89 fcanf和fprintf
查看>>
javascript——自定义右键菜单
查看>>
求二叉树中相差最大的两个节点间的差值绝对值
查看>>
PHP 类名::class含义
查看>>
设计模式简介和分类,重点在总结
查看>>
数据库默认端口
查看>>
前端框架的区别,优缺点。
查看>>
oracle中使用sql语句创建表空间、用户、授权及使用命令导入导出
查看>>
layout中加载gif图片
查看>>
::符号
查看>>
“零甲醛”真的无污染?美博士环保开展调研
查看>>