封装、继承、多态
三、多态:
多态一般都要和继承结合起来说,其本质是子类通过覆盖或重载,父类的方法,来使得对同一类对象同一个方法的调用产生不同的结果。
实现:
我们在实现获取不同电脑运行的不同系统时,先创建一个Computer类(父类)并添加一个system方法,再创建一个PC类(继承于Computer类)和Mac类(继承于Computer类),由于system的不同,我们可以在两个子类中各自重写一个system类,用于获取不同电脑的不同的系统。
Computer *com = nil;
Computer = [PC alloc]init];//实例化PC对象
[PC system];
Computer = [Mac alloc]init;//实例化Mac对象
[Mac system];
原理:
id类型:通用对象指针类型,弱类型,编译的时候不进行具体的类型检查。
动态绑定:动态类型可以做到在程序直到执行时才确定对象的真实类型,进而确定需要调用那个对象方法。
OC 不同于其他程序设计语言,他可以在运行的时候加入新的数据类型和新的程序模块,动态类型识别,动态绑定,动态加载。
优点:
1、多态最重要的优点在于简化了编程接口,何以理解?他允许在类和类之间重用一些习惯性的命名,而不是为每一个新加的函数命名一个新的名字。。这样,编程接口就是一些抽象行为的集合,从而和实现接口的类区分开。
2、多态也使得代码可以分散在不同的对象中,而不用视图在一个函数中考虑到所有可能的对象。这样可以优化代码的扩展性和复用性。挡一个新的情景出现时,无须对现有的代码进行改动,而只需要增加一个新的类和新的同名的方法。