Object_C初始化方法, 遍历构造器
//版本1
//- (id)init
//{
// work = @"工作";
// return self;
//}
//
// //版本2:调用父类的init方法,为父类的实例变量赋初值
//- (id)init
//{
// [super init];
// work = @"工作";
// return self;
//}
//
// //版本3:出于安全考虑,判断父类是否初始化成功,如果父类初始化成功,,在初始子类
//- (id)init
//{
// self = [super init];
// if (self != nil) {
// work = @"工作";
// }
// return self;
//}
//版本4 代码优化
//- (id)init
//{
// self = [super init];
// if (self) {
// work = @"工作";
// }
// return self;
//}
//版本5:优化代码
//- (id)init
//{
// if (self = [super init]) {
// work = @"工作";
// }
// return self;
//}
//初始化方法
//1.返回值类型为id
//2.方法名一般以init开头
//3.
//重写系统方法
- (id)init
{
self = [super init];//调用父类初始化
if (self) { //判断父类是否初始化成功
work = @"工作";//给实例变量赋初值
}
return self;//最终返回self
}
@interface Student : NSObject
{
NSString *name;
NSInteger number;
CGFloat score;
}
//自定义初始化方法
//解决的问题:把初始化和实例变量的赋值,结合在一起
//1.实例方法(-)
//2.返回值类型为id
//3.方法以init开头
- (id)initWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore;
- (id)initWithName:(NSString *)aName;
//便利构造器
//解决问题:把对象的创建和实例变量的赋值,结合在一起
//1.类方法(+)
//2.返回值类型为当前类(Student *)
//3.方法以当前类名开头(student)
+ (Student *)studentWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore;
+ (Student *)studentWithName:(NSString *)aName number:(NSInteger)aNumber score:(CGFloat)aScore
{
//1
// Student *student = [[Student alloc] init];
// [student setName:aName];
// [student setNumber:aNumber];
// [student setScore:aScore];
// return student;
//2
// Student *student = [[Student alloc] initWithName:aName number:aNumber score:aScore];
// return student;
//3
return [[Student alloc] initWithName:aName number:aNumber score:aScore];
}
Object_C初始化方法, 遍历构造器的更多相关文章
- OC基础:继承.初始化方法,便利构造器 分类: ios学习 OC 2015-06-16 19:27 84人阅读 评论(0) 收藏
继承: 1.单向继承,一个类只能有一个父类,一个父类可以有多个子类. 2.单向继承,基类(根类)是OSObject 3.子类可以继承父类的属性和方法 当父类的方法不满足子类的需求时,子类可以重写父类的 ...
- OC:继承、初始化方法、便利构造器
A继承 的作用就是为了,节省代码. 继承 :子类会继承父类 里面所有的内容 思想 :凡是继承过来的实例变量和方法 都是自己的(是从父类遗传过来的) 继承的使用场景 : 当我们多 ...
- 初始化方法,init,构造器
1.继承于NSObject class student: NSObject { var name : String? var age : Int = var friend : Int = init(n ...
- Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)
原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...
- 静态工厂方法VS构造器
我之前已经介绍过关于构建者模式(Builder Pattern)的一些内容,它是一种很有用的模式用于实例化包含几个属性(可选的)的类,带来的好处是更容易读.写及维护客户端代码.今天,我将继续介绍对象创 ...
- oc实例变量初始化方法
1 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx 2 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx3 使用实例初始化方法 ...
- iOS学习之Object-C语言继承和初始化方法
一.继承 1.面向对象的三大特性:封装,继承,多态. 面向对象提供了继承特性.把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可.继承既能保证类的完整,又能简化代码. ...
- CLR类型设计之方法与构造器
无论学习那门语言都要学习函数体,C#,JAVA,PHP,都会涉及到函数体,而C#的函数体成员并不少,方法和构造器就是函数体成员之一,函数体成员还包括但不限于:方法,属性,构造器,终结器,运算符及索引器 ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
随机推荐
- Hadoop 执行 hdfs 命令烦人的警告信息
问题描述: 安装完 hadoop,执行 hdfs dfs -ls 命令时,报警告如下: -- ::, WARN util.NativeCodeLoader: Unable to load native ...
- ADO接口简介
源地址:http://blog.csdn.net/xiaobai1593/article/details/7449151 参考: 1. 百度文库:http://wenku.baidu.com/view ...
- Haskell语言学习笔记(54)Data.Set
Data.Set Prelude> import Data.Set as Set Prelude Set> :set -XOverloadedLists Construction Prel ...
- powerdns
powerdns http://bbs.51cto.com/thread-880297-1.html https://blog.csdn.net/kepa520/article/details/791 ...
- 构造函数中的super和this的使用
super用于调用父类构造函数的部分,其必须出现在构造函数的第一行.super在调用时第一件事就是去执行父类构造函数的部分,所执行的父类构造函数与super()括号中的参数相对应. this用于在一个 ...
- java的反射应用
class B{ public static void main(String[] arg){ Class c_a = Class.forName(packageName + "." ...
- RegExp.$1 简单理解
RegExp 是javascript中的一个内置对象.为正则表达式.RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串, 以此类推,RegExp. ...
- 配置Maven从私服下载构件
--------------------siwuxie095 配置 Maven 从私服下载构件 从 Nexus ...
- Apache虚拟主机/端口多开
Apache就是强大啊,简单配置一下就可以再开启另一个端口的web服务. 笔者最近使用XAMPP架设php服务端.有一些特别的需求:同样的代码,需要开始不同的端口, 协议类型提供web服务给客户端(h ...
- JavaScript跨域总结与解决办法(转)
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...