• 「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,如学生有书,可以让书这个类作为学生类的属性

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    css选择器的分类及优先级计算方法总结
    第四周实验总结&实验报告
    2019春季总结
    第七周课程总结&实验报告五
    第六周学习总结&java实验报告四
    第二周Java学习总结
    第九周课程总结&实验报告(七)
    第五周学习总结&实验报告三
    第三周课程总结及实验报告
    第八周课程总结&实验报告(六)
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4486755.html
Copyright © 2020-2023  润新知