黑马程序员————OC面向对象_三大特性之继承与多态

时间:2023-02-18 17:50:19
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、继承
有一个类A、类B,将类A的属性赋值于类B,那么类B继承类A
// Car继承NSObject
@interface Car : NSObject

@end

1.继承的好处

1)抽取了重复代码
2)建立了类之间的联系
3)特点:子类可以拥有父类中的所有成员变量和方法
2.注意点
1)基本上所有类的根类是NSObject
2)oc中不允许子类和父类拥有相同名称的成员变量
3)父类必须声明在子类的前面
4)调用某个对象/类的方法时,优先去当前对象/类中找,如果找不到,去父类中找
3.继承的使用场合
1)当两个拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2)当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类
4.组合
    /*
区别:
继承:xxx是xxx
组合:xxx拥有xxx

*/


5.super关键字
super处于对象方法中,那么就会调用父类的对象方法;处于类方法中,那么就会调用父类的类方法
使用场合:子类重写父类的方法时想保留父类的一些行为
二、多态
1.前提:先有继承
2.多态:父类指针指向子类对象
    
// Dog继承animal,animal是Dog的父类
Dog *d = [Dog new];

animal *a = [Dog new];


3.局限性

多态限制:不能用父类指针型变量调用子类方法(虽然调用成功,但不规范)
非要调用:需强制转换
三、小结
1.只有利用类名调用类方法的时候,不需要在类名后面写*,其它情况下,类名后面一律统一加上一个*
    Circle *c1 = [Circle new];

- (BOOL)isInteractWithOther:(Circle *)other;

2.返回值是BOOL类型的方法,方法名一般都以is开头

    - [(BOOL)isInteractWithOther:(Circle *)other;


3.要想拥有某个对象,就先创建对象,然后再调用Set方法将对象传递给内部的成员变量
     四、Xcode高级功能
#pragma  mark   Xcode特有的注释
1)用来标记注释
2)用来对方法进行分组
int main()
{
#pragma mark 今天的代码写到这里



return 0;
}


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------