• 「OC」 继承


     

    一、基本用法

      1.设计两个类Bird、Dog

     1 // Bird的声明
     2 @interface Bird : NSObject
     3 {
     4     @public
     5     int weight;
     6 }
     7 - (void)eat;
     8 @end
     9 // Bird的定义
    10 @implementation Bird
    11 - (void)eat {
    12     NSLog(@"吃吃吃-体重:%d", weight);
    13 }
    14 @end
    15 // Dog的声明
    16 @interface Dog : NSObject
    17 {
    18     @public
    19     int weight;
    20 }
    21 - (void)eat;
    22 @end
    23 // Dog的定义
    24 @implementation Dog
    25 - (void)eat {
    26     NSLog(@"吃吃吃-体重:%d", weight);
    27 }
    28 @end

     

      2.有相同的属性和行为,抽出一个父类Animal(先抽取weight属性,再抽取eat方法)

     1 // Animal的声明
     2 @interface Animal : NSObject
     3 {
     4     @public
     5         int weight;
     6 }
     7 - (void)eat;
     8 @end
     9 // Animal的定义
    10 @implementation Animal
    11 - (void)eat {
    12     NSLog(@"吃吃吃-体重:%d", weight);
    13 }
    14 @end

      3.子类在父类的基础上拓充属性和方法

     1 // Bird的声明
     2 @interface Bird : Animal
     3 {
     4     @public
     5         int height;
     6 }
     7 - (void)fly;
     8 @end
     9 
    10 // Bird的定义
    11 @implementation Bird
    12 - (void)fly {
    13     NSLog(@"飞飞飞-高度:%d", height);
    14 }
    15 @end
    16 
    17 // Dog的声明
    18 @interface Dog : Animal
    19 {
    20     @public
    21         int speed;
    22 }
    23 - (void)run;
    24 @end
    25 // Dog的定义
    26 @implementation Dog
    27 - (void)run {
    28     NSLog(@"跑跑跑-高度:%d", speed);
    29 }
    30 @end

    二、继承的使用注意

      (1)编译器从上往下执行,所以在子类前面至少应该要有父类的声明;

      (2)OC中不允许子类和父类拥有相同名称的成员变量名;

      (3)OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;

      (4)OC语言是单继承语言。在OC语言中,基本上所有类的根类都是NSObject类。

      提示:重写即子类重新实现了父类中的某个方法,覆盖了父类以前的实现。

      提示:每个类中都有一个super class指针,该指针指向自己的父类。对象中有一个isa指针,该指针指向调用该对象的类。

    三、super关键字

      super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。

      作用:

        (1)直接调用父类中的某一个方法

        (2)super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的类方法。

      使用场景:子类在重写父类方法时,想要保留父类的一些行为。

    四、继承的好处和缺点

      继承的好处:

        (1)抽取出了重复的代码

        (2)建立了类和类之间的联系

      继承的缺点:

        耦合性太强

    五、继承和组合

      继承的适用场合:

        (1)当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。

        (2)当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类(考虑),在这种情况下,也可以考虑使用组合。

      继承:###是xxx,如狗是动物,可以让狗继承动物类

      组合:###拥有xxx,如学生有书,可以让书这个类作为学生类的属性

  • 相关阅读:
    Cocos2dx-背景无限循环播放
    centos 7端口和防火墙
    图片裁剪
    spring-boot图片压缩
    vue cli简介
    spring-boot的配置(实时生效)
    spring-boot打成war包放入tomcat运行
    spring-boot上传图片并访问
    linux链接ssh
    mysql远程访问
  • 原文地址:https://www.cnblogs.com/xiaodong208/p/4242315.html
Copyright © 2020-2023  润新知