一、课程回顾
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];
输出:我叫遥星梦