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

来源:互联网 发布:apache mysql php集成 编辑:程序博客网 时间:2024/04/29 21:48
------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培训、期待与您交流! -------

0 0