必备知识架构-①语言

[Toc]

知识架构

iOS知识库

Android知识库

面向对象(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)中值为空的对象

END

< 返回目录

1
2