• objective-C 多态


      

    在面向对象语言中,接口的多种不同的实现方式即为多态。
    多态对于不同对象响应同一个方法时做出不同反应
    多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态
    在使用多态时,会进行动态检测,以调用真是的对象方法
     
    //
    //  main.m
    //  mobile
    
    #import <Foundation/Foundation.h>
    #import "Communication.h"
    #import "Electrograph.h"
    #import "Telephone.h"
    #import "Student.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            Peerson *p=[[Student alloc]init];
          Communication *cuo=[[Electrograph alloc]init];
            [p sayhi:cuo];
            cuo=[[Communication alloc]init];
            [p sayhi:cuo];
            cuo=[[Telephone alloc]init];
            [p sayhi:cuo];
        }
        return 0;
    }
    //
    //  Peerson.h
    //  mobile
    #import <Foundation/Foundation.h>
    #import "Communication.h"
    @interface Peerson : NSObject
    -(void)sayhi:(Communication *)say;
    @end
    //
    //  Peerson.m
    //  mobile
    
    #import "Peerson.h"
    
    @implementation Peerson
    -(void)sayhi:(Communication *)say{
        [say call];
    }
    @end
    //
    //  Student.h
    //  mobile
    #import "Peerson.h"
    
    @interface Student : Peerson
    
    @end
    
    //
    //  Student.h
    //  mobile
    
    
    #import "Peerson.h"
    
    @interface Student : Peerson
    
    @end
    //
    //  Communication.h
    //  mobile
    
    #import <Foundation/Foundation.h>
    
    @interface Communication : NSObject
    -(void)call;
    @end
    
    //
    //  Communication.m
    //  mobile
    
    #import "Communication.h"
    
    @implementation Communication
    -(void)call{
        NSLog(@"我正在打电话呢");
    }
    @end
    //
    //  Electrograph.h
    //  mobile
    
    #import "Communication.h"
    
    @interface Electrograph : Communication
    
    @end
    
    //
    //  Electrograph.m
    //  mobile
    #import "Electrograph.h"
    
    @implementation Electrograph
    -(void)call{
        NSLog(@"我正在和就家人打电话");
    }
    @end
    //
    //  Telephone.h
    //  mobile
    #import "Communication.h"
    
    @interface Telephone : Communication
    
    @end
    
    //
    //  Telephone.m
    //  mobile
    
    #import "Telephone.h"
    
    @implementation Telephone
    -(void)call{
        NSLog(@"我的手机能上网");
    }
    @end
  • 相关阅读:
    DTOJ #3702. 月读(tsukuyomi)
    DTOJ #2311. 兔子与樱花 ( sakura )
    DTOJ #2416. 点燃的火焰(flame)
    dtoi4537 「TJOI / HEOI2016」树
    中科燕园gis外包------北京市人口普查地理信息系统
    中科燕园gis外包【动态标绘演示系统】v2.0 Flex版
    中科燕园GIS外包-----基于ArcGIS的应急平台
    arcgis server
    《深入理解ES6》之箭头函数
    【转】浏览器的工作原理:新式网络浏览器幕后揭秘
  • 原文地址:https://www.cnblogs.com/wyhwyh2114/p/4945996.html
Copyright © 2020-2023  润新知