这是我参与「第四届青训营 」笔记创作活动的的第6天
自学笔记3 | 青训营笔记
OC自学笔记
访问修饰符:只能用来修饰属性,限制属性可访问范围
- @private:本类方法中访问
- 注意:子类继承也有属性,但要通过父类方法访问
- 不想让子类访问时使用
- 默认@protected:本类和子类方法中访问
- @package:当前框架中访问
- @public:任意地方访问:
- 不要使用
- 真私有:将属性写到实现中
- implementation Person{}
- 私有的,访问修饰符无法修改
私有方法:
- 不写声明,只写实现
面向对象复习
面向对象基本概念
- 封装
- 屏蔽内部实现
- 方便操作
- 方便维护
- 继承
- is-a关系
- 单根性:只有一个父类
- 传递性:A继承B,B继承C,A有C的方法和属性
- 多态:不同事物,同一个行为,具有完全不同表现
- 类与类(对象与对象)之间的关系
- 组合:类似has-a关系,一个类由其他几个类组合而成,本质都是属性中含有是其他类的实例
- 电脑
-
- cpu
- 主板
- 依赖:类的对象方法中的参数是其他类的对象
- 人:
- 打电话(电话)
- 人:
- 关联 :has-a关系,拥有关系
- 人:
- 狗
- 人:
- 继承 :is-a关系
- 组合:类似has-a关系,一个类由其他几个类组合而成,本质都是属性中含有是其他类的实例
- 耦合度:对象的修改,对其他对象的影响
- 目标:高内聚,低耦合
- 方法:代理/设计模式:单一指责原则
里氏替换原则LSP
- 里氏替换原则LSP:子类可以替换父类的位置
- 本质:父类指针可以指向子类对象
- 只能访问父类方法和属性
- 如果子类重写了父类方法,调用的就是子类重写的方法
- 原因:
- 指针可以存储本类和子类对象地址
- 父类有的方法和属性,子类都用,不会影响功能
重写
- 对父类的方法进行重写:
- 在.m实现中,直接重写
- NSLog打印类
- 打印description方法的返回值,(返回值是NSString*)
- 可以通过重写,返回自己想要的
- [p1 description];
- 打印description方法的返回值,(返回值是NSString*)
继承:
- 每个类有一个isa指针指向父类:通过isa指针,可以找到父类方法
- 当前类中没有方法,一直找到NSObject,如果没有就报错
- 重写时,不继续向上找