OC—面向对象的三大特征 封装、继承、多态

(OC_03)

1.封装

封装:隐藏内部实现,稳定外部接口


好处:
使用起来更加简单
变量更佳安全
可以隐藏内部实现
开发速度更加快捷

作用:
类来封装了属性和方法
方法封装了实现的代码
属性封装了成员变量


继承:继承是避免冗余,提高代码的可重用性和维护的有效手段

     继承的传递性:直接父类 间接父类

     继续需要符合的关系:is-a
     子类和父类都需要满足 is-a 关系,才存在继承
     继承概念下的 is-a 关系是个单向关系

     子类具有父类的属性和行为,以及自身特殊的属性和行为

     继承的特点:
     1.使用继承可以实现代码的复用,减少代码冗余;
     2.OC中一个类可以继承另一个类,被继承的类称为父类或超类(基类),继承的类称为子类或派生类(孩子类);
     3.子类可以改变父类中已有的方法,执行不同的代码实现;
     4.子类可以改变父类中已有的方法,执行不同的代码实现。
     5.OC中只允许单一继承,因为多重继承会有称为“致命方块”的问题,如一个父类里面有+burn和-burn,+|-还有个子类xx,调用burn不知道调用+还是-;

    Father *father = [[Father alloc]init];
    father.name = @"Lee";
    [father sayHello];
    [father charge];


    NotInheritedSon *notInheritedSon = [[NotInheritedSon alloc ]init];
    notInheritedSon.name = @"xxxx";
    [notInheritedSon sayHello];
    [notInheritedSon charge];


    //继承Father 可以用Father的方法charge
    Son *son = [[Son alloc]init];
    son.homeAddress = @"foShan";
    [son charge];
    [son sayHello];
    [son race];

多态

多态就是对于不同对象响应同一个方法时做出的不同反应,它是建立在继承的基础上面。
    1.继承与同一父类的字类,它们本身具有自己的特征
    2.继承于统一父类的字类,在执行同一命令的时候,具有不同的效果

    SonA *sonA = [[SonA alloc]init];
    sonA.name = @"sonA";
    [sonA sayHello];


    SonB *sonB = [[SonB alloc]init];
    sonB.name = @"sonB";
    [sonB sayHello];

多态的好处

 1.可以简化编程接口
 允许多个类中定义同一消息接口
 可以定义一个通用的调用方法,以简化调用。
 2.把不同的子类对象都当作父类来看
 可以屏蔽不同子类对象之间的差异,写出通用的代码
 做出通用的编程,以适应需求的不断变化。
 1.可以简化编程接口

// id animal = NULL; //由于id类型的通用性质,我们可以将创建好任意对象赋值给animal

// animal = [Cat new];
// [animal eat];
//
// animal = [Dog new];
// [animal eat];

    //2.把不同的子类对象都当作父类来看

// Animal *animalB = nil;
//
//
// animalB = [Cat new];
// [animalB eat];
//
// animalB = [Dog new];
// [animalB eat];

    /*
        开闭原则 和 里氏代换原则

        开闭原则:对扩展开放,对修改关闭
        里氏代换原则:任何基类可以出的地方,子类一定可以出现
     */

    Cat *cat = [Cat new];
    Dog *dog = [Dog new];

    Person *person = [[Person alloc]init];

// [person feedCat:cat];
// [person feedDog:dog];

    [person feedaAnimal:dog];

输出当前对象所属的类
//打印哪个类里面的哪个方法
NSLog(@”%s”,FUNCTION);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值