小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1.面向对象的三大特征
-
封装
把对象的属性和行为封装起来,外界只能用接口使用该对象,而且不能通过任何形式修改对象内部的实现
-
继承
继承主要描述的是类与类的关系,通过继承可以在不必重写类的情况下,使原有类的功能进行扩展
-
多态
父类中定义的属性或方法被子类继承后,可以使同一个属性或方法在父类及其各个子类中具有不同的含义
2.封装
-
setter的封装-
专门为对象的属性赋值
-
-(void)setXXX:(参数类型)参数1:(参数类型)参数2......;
-
-
getter的封装-
专门返回属性的值
-
-(int)age; //声明 -(int)age{ return _age; } //方法的实现 [p age];
-
3.static关键字
只修饰方法中的局部变量,使它变成静态变量,方法执行完毕后,不被回收,下次执行方法时直接使用静态变量,不用再次声明,即使再次声明也不起作用。
4.继承
-
1.格式
@interface 类名:父类名 @end- 子类拥有父类所有的成员,包括属性和方法
- 是类的继承不是对象的继承
- 子类不能定义和父类同名的属性
-
2.特点
-
单根性
一个子类只有一个父类
-
传递性
拥有父辈甚至祖辈的所有属性和方法
-
-
3.
NSObject类是所有类的父类该类定义了一个类方法new,是专门用来创建对象的,返回值是这个对象的指针
-
4.方法的重写
- 直接重写方法的代码就可以
- 当一个父类指针指向子类对象时,如果父类指针调用的方法在子类对象中重写了,调用的就是重写后子类的方法
-
5.
super关键字只能用在类方法和对象方法中
-
对象方法中,调用当前对象从父类继承的对象方法
在对象方法中用`[对象指针 对象方法];`来调用 -
类方法中,调用当前类从父类继承的类方法
在类方法中用`[类名称 类方法];`来调用
-
5.访问修饰符
- 只修饰属性,不修饰方法
| 修饰符 | 含义 | 访问权限 |
|---|---|---|
| @private | 本类内部访问 | 低 |
| @protected | 本类和子类中访问 | |
| @package | 当前框架被访问 | |
| @public | 任何地方被访问 | 高 |
- 注意
- 默认是
@protected - 如果父类的属性被
@private修饰,那么子类只能通过父类的方法间接访问父类的属性 - 不要轻易使用
@public
- 默认是
6.里氏替换原则
- 简单理解:子类替换父类的位置后程序功能不受影响
- 作用
- 储存本类对象的地址或者子类对象的地址
NSObject类型的指针,可以储存任意OC对象的地址- 一个数组元素类型是一个
OC指针类型(NSObject指针类型),这个数组不仅可以储存本类还有子类对象(任意OC对象) - 为方法的参数传值时可以是本类对象也子类对象
- 当一个父类指针指向子类对象时,通过这个指针只能调用子类对象中的父类成员,子类独有的成员无法访问
7.多态
不同事物对同一个行为的不同表现形式,比如动物的叫声
8.description方法
个父类指针指向子类对象时,通过这个指针只能调用子类对象中的父类成员,子类独有的成员无法访问
7.多态
不同事物对同一个行为的不同表现形式,比如动物的叫声
8.description方法
%@输出指针引用的对象或者字符串rewind(stdin)清除标准输入的按键缓冲区