多态与类的本质
一、多态的概念:
不同的对象以自己的方式响应父类同名的方法,就是多态
体现出来:
父类的指针指向了子类的对象
多态的条件:
1)有继承关系
2)有方法重写(子类把父类的同名方法给重写了)
多态的使用注意:
Animal *an=[Dog new];
当an调用Dog独有的方法而Animal没有的方法,编译器会报错
[ (Dog *)]用Dog强制转换就可以调用
Animal *an=[Animal new];
当an 调用Dog独有的方法时会报错,当强制转换后编译器不会报错但是还是错误的
二、类的本质
1.类对象的获取方法
1)类对象属于Class类型,通过实例对象来获取
定义了Dog类,实例对象 Dog d=[Dog new]; Dog d1=[Dog new];
Class c1=[d class]; //Dog
Class c2=[d class]; //Dog
通过哪个对象获取的都是Dog对象
2)通过类名来获取类对象
Class c3=[Dog class]; ///Dog
2.获取类对象
Class c1=[Person class];
使用类对象创建实例对象
Person *p=[c1 new]; //c1相当于Person
[p test]; 调用对象方法
[c1 test]; 调用类方法
|
|