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. SQL SERVER 2008 R2 SP3 发布

    今晚上刚发现,微软很低调啊 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=44271 整合SP3的Express系列版本还没 ...

  2. 【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

    #[整理]JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系 ![关系图解](http://images.cnitblog.com/blog/84 ...

  3. c++类使用

    一.C++定义类(注意:结束部分的分号不能省略) class 类名 { public: //公共的行为或属性 private: //公共的行为或属性 }; 注意:类的成员变量在定义时不能进行初始化, ...

  4. Hadoop的分布模式安装

      1.确定集群的结构 IP(主机名) 角色 192.168.1.220(hadoop0) NameNode.JobTracker 192.168.1.221(hadoop1) SecondaryNa ...

  5. virtualenv 和 virtualenvwrapper 实践

    virtualenv 首先来聊一下 virtualenv 是个什么鬼. 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题:亦或者是在开发过程中不想让物理环境里充 ...

  6. LeetCode 刷题记录(二)

    写在前面:因为要准备面试,开始了在[LeetCode]上刷题的历程.LeetCode上一共有大约150道题目,本文记录我在<http://oj.leetcode.com>上AC的所有题目, ...

  7. URAL 2067 Friends and Berries (推理,数学)

    题意:给定 n 个人,每个人两个值s, r,要满足,p(v, u) = sqrt((sv − su)^2 + (rv − ru)^2), p(v,u,w) = (p(v,u) + p(v,w) + p ...

  8. ssh+dwr 的使用源码案例

    加入dwr.jar包 ======jsp=============== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ...

  9. 同时使用Binding&StringFormat 显示Text【项目】

    Case ID (?unit) 红色的字根据一个后台boolean来做trigger,可以是Case or Open 蓝色的字binding到后台的一个string属性来切换任意的Unit单位 这样一 ...

  10. Labeled ContentControl & LabeledControl【项目】

    LabeledTextBoxControl: C#定义 using System; using System.Collections.Generic; using System.Linq; using ...