黑马程序员技术交流社区

标题: oc学习笔记之类和对象 [打印本页]

作者: cherrycool    时间: 2015-12-2 22:20
标题: oc学习笔记之类和对象
  1. #import <Foundation/Foundation.h>
  2. //引入头文件
  3. typedef enum{kCOlorWhite,kColorBlack,kColorYellow} Color;
  4. // typedef可以为数据类型定义新的类型名称,将枚举类型定义为Color
  5. #pragma mark 狗的类声明

  6. // pragma mark标记代码,用于代码的分组和导航功能
  7. @interface Dog:NSObject
  8. {//狗的属性
  9.     @public
  10.     Color _color;//狗的颜色
  11.     float _weight;//狗的体重
  12. }
  13. //狗的行为
  14. -(void)eat:(NSString *)foodName;//-表示对象方法
  15. -(void)run;
  16. @end
  17. #pragma mark 狗的类的实现
  18. @implementation Dog
  19. -(void)eat:(NSString *)foodName{
  20.     _weight+=0.5;
  21.     NSLog(@"狗吃了%@,体重为%.2f",foodName,_weight);
  22.     /*狗吃了食物,体重增加0.5kg*/
  23. }
  24. -(void)run{
  25.   _weight-=0.1;
  26.    NSLog(@"狗的颜色%d,体重为%.2f",_color,_weight);
  27.     /*狗做一次运动,体重会减少0.1kg*/
  28. }
  29. @end
  30. #pragma mark 人的类声明
  31. @interface Person: NSObject
  32. { //人的属性(实例变量)
  33.     @public
  34.     NSString *_name;//人的姓名
  35.     Dog *_dog;//狗的类
  36. }
  37. //人的行为
  38. -(void)feedDog:(NSString *) foodName;//喂狗吃食物
  39. -(void)walkDog;//遛狗
  40. @end
  41. @implementation Person

  42. -(void)feedDog:(NSString *) foodName{
  43.     [_dog eat:foodName];//调用狗的方法吃食物
  44. }
  45. -(void)walkDog{
  46.     [_dog run];//调用狗的方法运动
  47. }

  48. @end

  49. int main(int argc, const char * argv[]) {
  50.     @autoreleasepool {
  51.         //创建狗类的实例对象d
  52.         Dog *d = [Dog new];
  53.         //狗的实例变量的初始化赋值
  54.         d->_color = 0;
  55.         d->_weight= 20.0;
  56.         //创建人类的实例对象p
  57.         Person *p=[Person new];
  58.         //给人的实例变量初始化
  59.         p->_name=@"刘德华";
  60.         p->_dog = d;
  61.         //调用对象方法 人给狗喂食
  62.         [p feedDog:@"排骨"];
  63.         [p feedDog:@"鱼"];
  64.         [p walkDog];
  65.         
  66.       
  67.     }
  68.     return 0;
  69. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2