Dog.h
#import <Foundation/Foundation.h> @interface Dog : NSObject
{
NSString *_name;
int _age;
char *cc;
}
@end Dog.m
#import "Dog.h" @implementation Dog // 谁调用Self所在的方法,self就指向谁,self就是谁.
- (instancetype)init
{
/**
* 重写init方法是有条件的
*/
// self是谁?DogSon
if (self = [super init]) {//初始化父类的
// 子类的初始化等等其他操作,在这个花括号里面做
_age = ;
NSLog(@"Dog---%@",self);
}
return self;
} @end DogSon.h
#import "Dog.h" @interface DogSon : Dog
// 自定义构造方法
// 命名的时候:init后边接的单词,首字母必须大写.
- (instancetype)initWithName:(NSString *)name andAge:(int)age;
@end /*
1.自定义构造方法 1.自定义构造方法的规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id(instancetype)类型
(3)方法名一定以initWith开头 3.自定义构造方法的使用注意
(1)自己做自己的事情
(2)父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性
*/ DogSon.m
#import "DogSon.h" @implementation DogSon
- (instancetype)initWithName:(NSString *)name andAge:(int)age
{
// 必须调回父类的构造方法
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
//- (instancetype)init
//{
// if (self = [super init])
// {
// _age = 10;
// }
// return self;
//}
@end main.m
//05-12 /**
new一下,就能有一个对象.
1.分配内存空间 + alloc
2.初始化. - init 构造方法:指的就是初始化方法. 需求1:创建10只狗,让这些狗在创建时,所有的年龄都是1岁.
修改构造函数可以考虑重写init方法. 初始化成员变量
OC对象初始化为nil
C语言指针初始化为:NULL
基本数据类型初始化:0 需求2:创建10只小狗,让这些狗在创建时,可以手动进行成员变量的赋值.
*/
#import <Foundation/Foundation.h>
#import "DogSon.h" int main(int argc, const char * argv[]) {
@autoreleasepool { DogSon *s = [[DogSon alloc] initWithName:@"旺财" andAge:]; }
return ;
} /**
1.构造方法 1.构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; new方法的内部会分别调用两个方法来完成3件事情: (1)使用alloc方法来分配存储空间(返回分配的对象);
(2)使用init方法来对对象进行初始化。
(3)返回对象的首地址.
可以把new方法拆开如下: (1).调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *p1=[Person alloc];
(2).调用对象方法-init进行初始化,返回对象本身Person *p2=[p1 init];
(3).以上两个过程整合为一句:Person *p=[[Person alloc] init]; 说明: (1)init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,以减号开头。默认初始化完毕后,所有成员变量的值都为0。
(2) alloc
向某个类发送alloc消息的结果
为该类分配内存,以存放该类的全部实例变量
还将这块内存区域全部初始化为0
注意
一个刚刚分配的对象并不能立即使用
需要先初始化该对象,然后才能使用它
但由于未进行初始化, 随后可能出现一些不可预测的行为
*/

oc-28-构造函数的更多相关文章

  1. OC - 28.模拟时钟

    效果图 实现思路 该示例通过隐式动画实现 表盘通过显示在imageView中的一张图片来实现 在表盘上绘制(时分秒)三条直线,分别位于不同的图层,且时针位于最下层,秒针位于最上层 设置直线为圆角 直线 ...

  2. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  3. OC总结 【OC基础语法相关知识】

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  4. C# 多线程编程 ThreadStart ParameterizedThreadStart

    原文地址:http://club.topsage.com/thread-657023-1-1.html 在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运 ...

  5. C# 通讯网关开发

    C# 通讯网关开发 楼主从12年毕业大部分时间一直从事于通讯网关的开发,刚刚学那会连C#是啥都不知道,就直接入手网关开发,前前后后到现在也算是弄了5.6个通讯协议,后来看到北风之神的socket框架和 ...

  6. js 类

    ---恢复内容开始--- <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset ...

  7. Chapter6(函数) --C++Prime笔记

    1.重载函数,也就是说一个名字可以对应几个不同的函数. 2.内置类型的未初始化局部变量将产生未定义的值. 3.局部静态对象在程序执行路径第一次进过对象定义语句时初始化,并且直到程序终止才被销毁. 内置 ...

  8. HashMap实现原理(JDK1.8)

    概述HashMap在底层数据结构上采用了数组+链表+红黑树,通过散列映射来存储键值对数据因为在查询上使用散列码(通过键生成一个数字作为数组下标,这个数字就是hash code)所以在查询上的访问速度比 ...

  9. C++ primer plus读书笔记——第13章 类继承

    第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...

  10. 二叉树——Java实现

    1 package struct; 2 3 interface Tree{ 4 //插入元素 5 void insert(int value); 6 //中序遍历 7 void inOrder(); ...

随机推荐

  1. RequiredFieldValidator的使用

    特別說明:1.一個Button要對頁面的多個控件進行驗證,則需要設置button和其它受控控件的ValidationGroup屬性 aspx頁面實例: <tr class="h&quo ...

  2. Hadoop2.2.0 自动切换HA环境搭建

    自动切换的HA,比手动切换HA集群多了一个zookeeper集群 机器分配: zookeeper:hadoop4,hadoop5,hadoop6 namenode:hadoop4,hadoop5 da ...

  3. JXSE and Equinox Tutorial, Part 2

    http://java.dzone.com/articles/jxse-and-equinox-tutorial-part-0 ———————————————————————————————————— ...

  4. ZOJ 3810 Pretty Poem 分类: ACM 2015-05-17 14:40 83人阅读 评论(0) 收藏

    Pretty Poem Time Limit: 2 Seconds     Memory Limit:65536 KB Poetry is a form of literature that uses ...

  5. 经典CSS实现三角形图标原理解析

    前言: 在写这篇文章之前,我也看过很多前端大神写的代码,But,都只是粘贴代码和给出显示效果,对于初学者来说大家都喜欢刨根问底,为什么要这样做呢? 接下来就让我给大家分享一下我对CSS实现三角形的理解 ...

  6. UVaLive 7500 Boxes and Balls (数学)

    题意:给定 n 个球,每次从每篮子里拿出来一个放在一个新篮子里,并移除相同的,按球的个数进行排序,问你用最多几个球能完成循环. 析:数学问题,很容易发现前n项和就是最多的球数,所以我们只要找最大的n项 ...

  7. StructLayout特性

    StructLayout特性          公共语言运行库利用 StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列.如果要将类传递 ...

  8. 待整理 - BAT文件编写

    BAT文件语法和技巧(bat文件的编写及使用)  http://www.jb51.net/article/5828.htm

  9. centOS安装openoffice

    centOS安装openoffice的方法: yum install openoffice.org-writer yum install openoffice.org-calc yum install ...

  10. 关于WebPlayer Sandbox的小节

    不可以像其他build target一样读写I/O 不可以call一些private或者internal methord 只要在一个top level的domain下可以不需要xml dmain po ...