一、构造方法

(一)构造方法的调用

完整的创建一个可用的对象:Person *p=[Person new];

New方法的内部会分别调用两个方法来完成2件事情:

  1) 使用alloc方法来分配存储空间(返回分配的对象);

  2) 使用init方法来对对象进行初始化。

可以把new方法拆开如下:

  1. 调用类方法+alloc分配存储空间,返回未经初始化的对象

    Person *p1=[person  alloc];

  2. 调用对象方法-init进行初始化,返回对象本身

    Person *p2=[p1 init];

  3. 以上两个过程整合为一句:

    Person *p=[[Person alloc] init];

说明:init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,以“-”减号开头。默认初始化完毕后,所有成员变量的值都为0。

(二)构造方法的代码示例

1. 如果我需要让每个对象创建出来的初始值是10:

2. 让学生继承人类,要求学生对象初始化之后,年龄是10,学号是1:

(三)构造方法使用注意

  (1)子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候应该首先对从父类继承而来的成员变量先进行初始化。

  (2)原则:先初始化父类的,再初始化子类的。

  (3)重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。

  (4)注意点:#1先调用父类的构造方法[super init]; #2再进行子类内部成员变量的初始化。

二、自定义构造方法

(一)自定义构造方法的规范

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

  (2)返回值一般是id类型

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

(二)自定义构造方法的代码实现

Person类的声明,其中声明了两个接收参数的自定义构造方法

Person类的实现

Student继承自Person类,声明了一个接收三个参数的构造方法

Student类的实现

主程序调用方法

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

  (1)自己做自己的事情

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

oc_转_构造对象的方法,以及类的继承的更多相关文章

  1. Js构造对象-添加方法的三种方式

    Js构造函数添加方法有多种方案,来看一个混合方式构造函数的例子:申明person构造函数,有两个属性,name,qq.在原型上添加方法showname.这是最常用的方法. <script> ...

  2. Java笔记:对象,方法,类

    1.数据类型(类) 对象名; 这里要求数据类型必须为复合数据类型,基本数据类型声明的结构只能称为变量,而不能称为对象. 对象的初始化 对象名= new 构造方法(参数); 2.方法: 访问控制符 [修 ...

  3. iOS category中的所谓属性 和 从xib初始化对象的方法 以及类扩展

    今天在编码时遇到以下代码 @interface UITextField (TCCustomFont) @property (nonatomic, copy) NSString* fontName; @ ...

  4. 第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系

    1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服 ...

  5. cb17a_c++_构造string对象的方法

    cb17a_c++_构造string对象的方法string sstring s(s2)string s("value")string s(n,'c')string s(b,e) / ...

  6. cb18a_c++_修改string对象的方法

    cb18a_c++_修改string对象的方法s.insert(p,t)s.insert(p, 'A'); //迭代器前插入As.insert<p,n,t)s.insert(p, 3, 'B') ...

  7. JS基础_对象的方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性

    模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...

  9. scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类

    一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...

随机推荐

  1. Java学习笔记之:Java引用数据类型之字符串

    一.简介 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串. 创建字符串最简单的方式如下: String greeting = "H ...

  2. wxpython ItemContainer

    ItemContainer 是 很多可以添加string item的部件的父类,封装很多有用的方法,可以用来获取部件的被选中item 的string 如wx.ListBox ,wx.CheckList ...

  3. Centos硬件信息查看命令

    [root@yan-001 ~] # uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令 [root@yan-001 ~] # head -n 1 /etc/issue # ...

  4. 机器学习 —— 概率图模型(Homework: MCMC)

    除了精确推理之外,我们还有非精确推理的手段来对概率图单个变量的分布进行求解.在很多情况下,概率图无法简化成团树,或者简化成团树后单个团中随机变量数目较多,会导致团树标定的效率低下.以图像分割为例,如果 ...

  5. MyEclipse 利用反向功能生成Java 实体类

    1.Window -> Open Perspective -> MyEclipse Database Explorer 到DB Broswer界面 2.右键 -> New,新建一个数 ...

  6. (2)WinForm中改变Tab选项卡的顺序

    Tab选项卡选中,在其属性中找到TabPages这个属性.点进去,可以通过上下移动标签卡改变标签卡的顺序.

  7. DNSget Ip

    var address = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(a => a.AddressFamily ...

  8. Ubuntu 安装mod_python配置Apache2

    在Ubuntu上搭建Python运行环境,mod_python是不可少的(据说mod_swgi也是可以的,没有亲测).使用命令安装mod_python. 安装: apt-get install lib ...

  9. apk反编译(2)smali语言及文件

    Smali语言是Davlik的虚拟机使用的一种语言,用toolapk反编译apk后,可以见到大量的.smali文件. 可以按照smali语法对其修改,然后重新生成一个未签名的apk. 下面是一个示例: ...

  10. RecyclerView(6)自定义RecyclerView.LayoutManager

    A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as wel ...