博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
objective - C 阅读笔记(与c++的相似与不同之处) (续)
阅读量:5237 次
发布时间:2019-06-14

本文共 1586 字,大约阅读时间需要 5 分钟。

一,类的定义

   @interface Circle : NSObject      //类的定义放在.h文件中

  {

        ShapeColor fillColor;

        ShapeRect bounds;             //数据成员

  }

      //void类型方法,带有一个ShapeColor类型形参

  - (void) setFillColor : (ShapeColor) fillColor;

 

    //void类型方法,带有一个ShapeRect类型形参和一个int型形参,setBounds:和atindex:    

  - (void) setBounds : (ShapeRect) bounds

                  atIndex : (int) index; 

 

    //void类型方法,不带参数.

  - (void) draw;

  @end                       //完成声明

 

二,类的实现部分(代码存放于.m文件中[相当于c++中的.cpp文件])

  @implementation Circle

  - (void) setFillColor : (ShapeColor) c

  {  fillColor = c ;  }

  - (void) setBounds : (ShapeRect) b

               atIndex : (int) index;  

  { bounds = b ; index++; }   

  - (void) draw

  { NSLog(@"drawing a circle at (%d,%d,%d,%d) in %@"),

                          bounds.x , bounds.y , bounds.width , bounds.height,

                           colorName(fillColor));

  }       

       //colorName是一个返回说明颜色的NSString类型字符串的方法

  @end                 //没有分号

 

三,调用带参方法(使用前文所建类的方法)

  ① 例:一个带一个参数的方法( object - c ):

          [ circle setFillColor : kRedColor ]

          一个带一个参数的方法(c++):

          circle.setFillColor(kRedColor);

  ② 例:一个带两个参数的方法( object - c ):

          [ circle setBounds : bound

                         atIndex : 1];

          一个带两个参数的方法(c++):

          circle.setBounds(bound , 1);

 

四,new语句

    id shape[3] ;

    shape[0] = [Circle new]     // [ 类 new ]

    用c++表示: 

    Circle (*shape)[3];

    shape[0] = new Circle();

 

五,类的继承

    //Circle类从Shape类继承所有变量以及方法

    @interface Circle : Shape 

    @end

 /**假设Shape类中含有空方法 - (void) draw{} 则可在Circle的实现中对draw方法进行重构 **/

    @implementation Circle

    - (void) draw

    { NSLog(@"........");}

    @end

 

六,复合 -- 对象间的组合,形成新的类(与继承比较)

   继承 --- "is a", 具有"是一个"关系 ,"X是一个Y",使用继承.

   复合 --- "has a",具有"有一个"关系,"X有一个Y",使用复合.

 

七,@class

  在.h文件中定义类时使用@class声明一个未包.h头文件的类,可使编译通过,并正常使用.当然要在主程序中把需要的头文件包括完整.

  这个操作相当于告诉编译器:"相信我,你以后会知道这个类是怎样的."

 

 

             

转载于:https://www.cnblogs.com/boloyonghao/archive/2012/08/09/2630974.html

你可能感兴趣的文章
Fedora 下安装codeblocks
查看>>
[ 转载 ] 线程和进程的区别
查看>>
SqlHelper.cs
查看>>
idea自动生成serialversionUID
查看>>
spark快速上手
查看>>
linux命令mkdir&chmod&chown
查看>>
python3之memcached
查看>>
cout与cerr
查看>>
xxl-job 源码分析系列(1)- 配置运行
查看>>
tcpdump截帧工具使用
查看>>
Android中的多线程断点下载
查看>>
asp.net 本质论学习
查看>>
ASP.NET Web API上实现 Web Socket
查看>>
软件测试(2048小游戏测试用例)
查看>>
PBXCp Error
查看>>
[poj 3539] Elevator (同余类bfs)
查看>>
[tyvj2054] 四叶草魔杖 (最小生成树 状压dp)
查看>>
使用maven创建web项目
查看>>
Spring mvc shiro 整合
查看>>
解决 maven 项目启动 提示 class not find
查看>>