zoukankan      html  css  js  c++  java
  • IOS ——OC——id数据类型的使用范围

    (1)id数据类型
    • 通用的指针类型
    • 没有*号
    • 可以指向一个任何类的对象(设置是nil),而不关心其具体类型
    • 在运行时检查具体类型
    • 可以对其发送任何(存在的)消息
    • 不能访问属性(可以通过用[]来访问)
     
    (2)静态数据类型
     
    -类型*对象名称
    总是存储特定的数据类型那个
    编译器在编码阶段进行语法检查
     
     

    例如

    定义两个类,一个为Animal为父类,一个为cat为子类

    @interface Animal : NSObject
    {
    }
    - (void)eat;
    @end

    @implementation Animal
    - (void)eat
    {
        NSLog(@"吃东西");
    }
    @end

    @interface Cat : Animal
    {
    }
    - (void)run;
    @end

    @implementation Cat
    - (void)run
    {
    NSLog(@"跑起来了");
    }
    @end

    //这个函数是专门用来喂动物的
    void feed(Animal *animal)
    {
     [animal eat];
    }
    int main()

         Cat *d = [Cat alloc]init];//d为指向狗类型的指针
        feed(d);//可以传值d给feed函数的参数
        Animal *a=[Animal alloc]init];//a为指向动物类型的指针
        feed(a);//可以传值a给feed函数的参数
       Animal *c=[Cat alloc]init];//将一个Cat对象的地址赋值给动物类型的指针c
        [c run];//这里就是多态的局限性,父类Animal中并没有定义run方法,父类类型的变量 不能用来调用子类的方法
       feed(c);
       return 0;
    }
    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    二十几岁的事情之一,缩小理想!
    mysql数据库建表分类字段--尽量少用字符串--原因探索
    Linux 提升逼格之 命令别名 分享
    git 认证问题之一的解决 : http ssh 互换
    rabbitmqctl 命令整理
    golang 用defer 捕获error 需小心
    Linux 常用命令 随口说
    随便记录几个点
    喜鹊开发者(The Magpie Developer)
    主流开放平台接口说明
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4947219.html
Copyright © 2011-2022 走看看