OC基础04

OC基础04

面向对象的三大特征

封装

什么是封装?
  1. 属性的封装

    外部人员可以改变对象的属性,或者赋值给对象属性不合法,却一样可以输入输出,寻找一种封装属性的办法,让外部人员不能轻易访问属性,需要时还可以给属性增加限制,规范数据.

setter方法(只写,硬性规定不能更改格式)
1. 先设置属性为私有属性,外部不能直接访问.
2. 为类提供方法,能为属性赋值
3. 一定是对象方法(要赋值)
4. 一定具有与对象属性数据类型相同的类型参数,参数名与属性名相同去掉下划线
5. 没有返回值,只是赋值
6. 以set开头后面接属性名首字母大写
7. 外界访问只能调用set方法

存在的问题只能写入属性,不能读取,引入get方法
getter方法(只读)
1. 为属性提供一个读取的方法
2. 一定是对象方法(访问对象的属性)
3. 必须有返回值,类型与属性类型一致
4. 方法名,注意不是get加属性名,直接属性名
5. 没有参数

只读封装

只写封装

继承

多个类属性方法相同含义类似,要多次复制属性和方法,代码冗余,不便于后期维护修改

子类继承父类所有属性和方法

注意
子类变量(属性和方法)不能和父类相同

支持单一继承和多层继承,不支持多个继承

满足A是一个B类才能继承

只要有一个成员不是所有成员的子类都有的,就不应该定义在父类中.例子:托年是鸟不会飞,飞就不能定义在鸟类中

多态

类与类之间的关系

组合关系

一个类有其他的几个类组合而成,例子:电脑与零件的类

依赖关系

A类对象作为B类对象的参数,B类依赖于A类.B类无参数无法实现.
例子:上帝杀人

编程目标:低耦合,高内聚

低耦合:类之间关系不要联系的太紧密,不然一个类改变其他的都不能使用了
高内聚:一个对象做与自己有关的事情,不要做无关的事.

关联关系

A类对象作为B类对象的属性,但是不是组合关系.例子:狗作为人类的属性.

Xcode文档

快速帮助

option键查看

士兵突击的实例:士兵开枪,枪射击子弹

枪:型号,颜色,射击行为
士兵:名字,兵种,枪,直接用这把枪不用传参数
必须用set,get方法封装属性
快速构造属性方法
用set,get方法就可以引用出.符号

static关键字

在OC中修饰方法中的局部变量,不能修饰方法,不能修饰属性.

在C中修饰函数的局部变量变为动态变量,修饰函数不能跨文件访问,修饰全局边变量只能在当前模块中访问

extern修饰的全局变量可以跨模块访问

self关键字

思考解决的问题?

在方法中可以定义一个与属性同名的局部变量(虽然一般除了属性变量其他变量不加下划线)

怎么在这个方法中访问属性?怎么在这个方法中调用这个对象的其他对象方法?
在这个方法内定义新的对象显然不能满足这个对象调用当前方法(创建了新的对象),OC中有一个关键字可以指向自己的对象self
* 首先self是一个指针,在对象方法中指向当前对象,在类方法中指向当前类.且不能指向自己的方法.
*用法:

1 访问对象的属性,调用当前对象的其他对象方法

2 调用类方法

3 声明变量时不能用self(只是指针,不是数据类型).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值