zoukankan      html  css  js  c++  java
  • OC 多态

    OC 多态

    多态的概念

    • 没有继承,就没有多态
    • 不同类的对象能够定义相同名称的方法
    • 当父类对象的指针或引用指向子类对象时,会进行动态监测,调用真实的方法
    • C++只有虚函数才能实现多态,OC中所有方法都可以

    多态的局限性

    父类类型的对象不能直接调用子类对象特有的方法,如果必须要调用,则必须将父类对象强制转换成子类对象

    实例

    //
    //  ViewController.m
    //  多态
    //
    //  Created by ma c on 16/5/11.
    //  Copyright © 2016年 xubaoaichiyu. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "A.h"
    #import "B.h"
    #import "C.h"
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        A * b = [[B alloc]init];
        A * c = [[C alloc]init];
        
        [b test];
        [c test];
        
    }
    
    @end
    
    
    //
    //  A.h
    //  多态
    //
    //  Created by ma c on 16/5/11.
    //  Copyright © 2016年 xubaoaichiyu. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface A : NSObject
    
    - (void)test;
    @end
    
    
    //
    //  B.m
    //  多态
    //
    //  Created by ma c on 16/5/11.
    //  Copyright © 2016年 xubaoaichiyu. All rights reserved.
    //
    
    #import "B.h"
    
    @implementation B
    
    - (void)test{
        NSLog(@"B");
    }
    @end
    
    
    //
    //  C.m
    //  多态
    //
    //  Created by ma c on 16/5/11.
    //  Copyright © 2016年 xubaoaichiyu. All rights reserved.
    //
    
    #import "C.h"
    
    @implementation C
    
    - (void) test{
        
        NSLog(@"C");
    }
    @end
    
    

    测试结果:
    2016-05-11 19:01:57.353 多态[3204:1562722] B
    2016-05-11 19:01:57.354 多态[3204:1562722] C

  • 相关阅读:
    map
    01背包和完全背包 POJ
    并查集 计算节点数量
    set
    map,vector,queue 图 综合运用
    并查集 hdu-1325 Is It A Tree?
    js中的ajax
    java算法
    MySql在Window上的安装
    微信开发账号要求
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5483239.html
Copyright © 2011-2022 走看看