必备知识架构-①语言
–
知识架构
## 面向对象(OOP)面向对象的三个特性:封装、继承和多态。
所谓封装,也就是把客观事物封装成抽象的类;
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。(或者说是不同对象以自己的方式响应相同的消息的能力叫做多态。)
继承的问题:如果架构工程师写父类,业务工程师实现子类。那么业务工程师很可能不清楚:哪些方法需要被覆盖重载,哪些不需要。如果子类没有覆重方法,而父类提供的只是空方法,就很容易出问题。如果子类在覆重的时候引入了其他不相关逻辑,那么子类对象就显得不够单纯,角色复杂了。
## 常见笔试/面试题 [< 返回目录](#目录)多态面临的四个问题:
父类有部分public的方法是不需要,也不允许子类覆重。
答:公司内部可以规定:
不允许覆盖重载父类中的方法、子类需要实现接口协议中的方法。父类有一些特别的方法是必须要子类去覆重的,在父类的方法其实是个空方法。
父类有一些方法即便被覆重,父类原方法还是要执行的。
父类有一些方法是可选覆重的,一旦覆重,则以子类为准。
2、const 与define使用的区别
- define修饰的变量不指定类型,const的指定类型
- defien修饰的变量每次引用都开辟一次内存,而const只有一份内存
- 如果修饰的是代码片段适合用define,如果修饰的是变量适合用const
6、nil, Nil,NULL 与 NSNull 的区别
- nil 指向一个对象的指针为空,在objc.h 的定义如下:
NSString *name = nil; - Nil 指向一个类的指针为空,定义如下:
Class aClass = Nil; - NULL 指向C类型的指针为空, 例如:
int*pInt = NULL; - NSNull 在Objective-C中是一个类,使用为生成一个空对象
[NSNull null];,多用于集合(NSArray,NSDictionary)中值为空的对象
1 |