zoukankan      html  css  js  c++  java
  • OC面向对象继承关系和组合关系笔记

    继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法;

    继承的关系特点描述出来就是:** “是” **  (例如:学生类 是 人类)

    组合关系描述的语句是:**** “拥有” ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 )

    继承示例代码:

    #import <Foundation/Foundation.h>
    
    //Animal类的声明
    @interface Animal : NSObject
    {
        int _legs;
    }
    
    - (void)eat;
    - (void)run;
    @end
    
    //Animal类的实现
    @implementation Animal
    - (void)eat
    {
        NSLog(@"动物在吃东西");
        
    }
    
    - (void)run
    {
        NSLog(@"动物在跑");
    }
    
    @end
    
    //子类Dog 继承 Animal
    @interface Dog : Animal
    {
        //int _legs;这个是不允许的,重复定义父类已有的成员变量,编译器会报错,但是在java中是可以的
    }
    
    @end
    
    //子类dog的实现
    @implementation Dog
    //方法的覆盖或叫重写
    - (void)eat
    {
        NSLog(@"狗在吃东西");
        
    }
    @end
    
    int main()
    {
        
        Dog *d = [Dog new];
        [d eat];//由于子类重写了,所以就用子类的eat方法
        [d run];//调用该方法时,还是会先在dog类中找,找不到时区父类中找
        
    }

      继承的好处:

    1:继承能够抽取重复的代码,提高了代码的重用;

    2:继承使类和类之间建立了关系;

    组合示例代码:

     1 //成绩类
     2 @interface Score : NSObject
     3 {
     4     int _cScore;
     5     int _ocScore;
     6 }
     7 @end
     8 
     9 @implementation Score
    10 
    11 @end
    12 
    13 
    14 
    15 //学生类
    16 @interface Student : NSObject
    17 {
    18     //组合:_cScore,_ocScore这两个属性在Score类中有了,但是不适合用继承,用组合比较好
    19     //int _cScore;
    20     //int _ocScore;
    21     Score *_score;
    22     int _age;
    23 }
    24 @end
    25 
    26 @implementation Student : NSObject
    27 
    28 @end
  • 相关阅读:
    LinuxMCE
    qBittorrent 0.9.0
    Exaile 0.2.9
    GAdminHttpd:图形化的 Apache 打点对象
    FBReader-电子书阅读对象
    CSSED:Linux 下 Web 拓荒者的 CSS 编纂利器
    Canorus:乐谱编辑软件
    AutoScan-收集监视及办理器械
    Lunar Applet:在桌面表现阴历
    Totem 2.18.1
  • 原文地址:https://www.cnblogs.com/cxbblog/p/3708572.html
Copyright © 2011-2022 走看看