1.封装的概念
(1)封装,顾名思义就是将东西包裹起来,不让外部访问
(2)面向对象的封装是针对类进行封装
(3)类是由属性和方法构成的,对类的封装就是对属性和方法的封装
1.1属性的封装 是让外部不能直接访问该属性
权限修饰符用来修饰实例变量
(1).@public: 公共的,本类内部和外部的类,都可以访问
(2).@protected: 受保护的,本类内部和子类,都可以访问
(3).@private: 私有的,只允许本类访问
(4).@package: 包,整个框架都可以访问
1.2 类的封装
我们如果把一个方法看做一个整体,方法即是一段功能实现的代码段
将功能封装成一个独立的方法,这样即可以重复调用,并且调用者不需要关心此方法实现的具体细节
2.继承
(1) 继承是指类与类之间的继承关系
(2)子类继承于父类,子类可以将父类的属性、方法继承下来
(3)OC中类与类的继承语法:@interface 子类 :父类
(4)父类有的属性,子类不允许再次定义
(5)父类的非私有属性和方法,子类都可以继承
3.多态
1.多态是指一种类型,具有多重表现形态。
2.不同的子类继承同一个父类,这些子类可以看做是同一类型,子类覆盖父类的方法,每个子类实现的功能不相同,这就是多态的表现.
- 必须存在继承关系
- 必须要有方法的覆写
- 父类的声明指向子类的实例
3.方法重写,覆写
- 子类要覆写父类的方法,他们必须要存在继承
- 方法的定义必须一样
- 如果子类没有覆写父类的方法,那么直接调用父类的方法
- 用self调用自身方法,如果这个方法没有被实现,那么会去父类找有没有这个方法, 如果父类也没有,会一直找到基类NSObject,如果还没有就崩溃,
- 在类本身没有这个方法,然后父类有,用self调用这个方法相当于[super test];
4.#import与@class
1. #import 导入一个头文件,获取该头文件中类的定义—方法和属性
2.@class 告诉编译器有这么一个类,具体这个类怎么定义的一无所知
3·在头文件里要使用其他类,一般用@class, 在实现文件用#import导入类文件
4.解决相互导入问题