zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    IEEE 网址
    知乎上非常棒的机器学习专栏
    怎样认识比你优秀的人并和他们成为朋友?
    影藏铜皮,显示原点与更改
    PCB检查事项,生成钻孔表
    布局-同样模块复用
    制作DIP Package及DIP焊盘制作,不规则焊盘制作
    制作SMD Package及SMD焊盘制作
    导入网络表
    导入DXF文件
  • 原文地址:https://www.cnblogs.com/wyhwyh2114/p/4945996.html
Copyright © 2011-2022 走看看