一、课程回顾

1、面向对象的语言

面向对象编程:以事物为中心

面向过程编程:以事件为中心

2、类和对象

描述类:具有相同特征和行为的事物的抽象

对象是类的实例,类是对象的抽象

3、定义类

接口部分:声明类的特征(实例变量)和行为(方法)

实现部分:实现方法

4、创建对象

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

alloc 类方法 只有类可以调用

作用:在堆区为对象分配存储空间;将存储空间清空,所有实例变量设置为0;返回对象存储空间的首地址。

init 实例方法 只有对象可以调用

作用:为实例变量设置

p1本质:指向Person类型对象的指针

当某个对象类型的指针指向创建的对象时,将p代指为对象

5、对象调用方法

[p sayHi];

Person * p2 = nil;

p2不能代指为对象,是空指针

在OC中,对nil做任何操作都是无效的


二、实例变量操作

在类的外部(定义类以外的部分)调用public修饰的实例变量时,使用->

1、实例变量赋值

p->_name = @"遥星梦";

p->_age = 18;

2、读取实例变量的值

NSLog(@name = %@, age = %d", p->_name, p->_age);

输出:name = 遥星梦, age = 18

3、重写init初始化

1)声明部分-----Person.h

- (Person *)init;

- (id)init; - (instancetype)init;----通用写法

id通用指针类型,只能指向对象类型

写法:id Teacher * Person * 不能表示int *

2)实现部分------Person.m

- (id)init

{
_age = 18;

return self;

// self表示自己 初始化方法必须返回self

}

4、实例方法

1)声明部分------Person.h

- (void)introduce;

2)实现部分------Person.m

- (void)introduce

{

NSLog(@"我叫%@", _name);

// 所有创建的Person对象,都可以调用属于这个对象的实例方法

// 实例方法中,可以直接使用实例对象

// 哪个对象调用了实例方法,那么实例变量中的值是当前这个对象的值

}

3)调用-------main.m

[p introduce];

输出:我叫遥星梦