• 继承和类设计


    ==========================

    继承和类设计

    ==========================

    oc是一门面向对象的语言,面向对象编程有三大特性:封装、继承、多态

    一.封装

    【注】封装就是把某些解决一些问题的代码进行模块化,对外部暴露一个接口。我们都称为封装了一个方法;

    【优点】

    1.封装可以增强代码的复用度。

    2.封装可以有效提高开发速度。

      

    二.继承

    子类拥有了父类的方法和属性的情况,我们称为继承;

    A:B(读作:A类继承B类,也就A类拥有了B类的方法和属性)

    【优点】

    1.不用书写任何代码,就可以实现某一些功能;

    2.可以不用修改父类的方法,对父类进行扩展;

    三.多态

    多态:类的多种形态

    【总结】

    多态的方式,可以有效的缩减代码量

    多态多用在具有相同方法名的类中,外部在调用方法之前,并不清楚需要调用哪个类中方法;

    四.类别(category)(扩展)

    有一些第三方类、咱们程序员以前自己写的一些类,要用到的时候突然发现如果这个类能有一个xxx方法那就好了,但是又不允许对第三分类或者以前写的类进行修改。那么怎么办?就可以用到类别(扩展)

    1.认识category

    #import <Foundation/Foundation.h>

    #import "dog.h"

    // 使用类别的时候需要先包含头文件

    // 类别一般单独放到一个类中进行扩展 

    #import "NSString+print.h"

    int main(int argc, const char * argv[]) {

        @autoreleasepool {  

            NSString* str = @"hello world hahah";

            [str show];

            NSLog(@"%@",str);

            dog* mydog = [[dog alloc]init];

            [mydog test];

         }

        return 0;

    }

    #import <Foundation/Foundation.h>

    // NSString 就是要扩展的类 ()小括号内部就是你自己写的类名

    @interface NSString (print)

    //这个位置写需要扩展出来的方法

    -(void)show;   // 打印当前对象

    // 可以扩展成员方法,但是不可以扩展成员变量

    // 【注】类别就是为了扩展第三方类或者其它以前自己写的类方法,但是又不可以对第三方和之前写的方法进行修改,而存在的;

    @end

    #import "NSString+print.h"

     @implementation NSString (print)

     -(void)show

    {

        //打印当前对象

        NSLog(@"%@",self);

    }

    @end

    #import <Foundation/Foundation.h>

    @interface dog : NSObject

    -(void)test;

    @end

    #import "dog.h"

    #import "NSString+print.h"

     @implementation dog

    -(void)test

    {

        NSString* str = @"我是dog class";

        [str show];

    }

    @end

    继承和类别的区别

    1.类别是对类的方法进行扩展,不能添加成员变量。但是继承可以在原有父类的基础上对方法和成员变量进行扩展。

    2.类别只能添加新的方法,不能修改删除原类的方法,但是继承可以增加和修改;

    3.类别不提倡对原有方法进行重载,但是继承可以。

    4.类别可以被继承,如果父类中实现了类别,子类也就存在此类别。

    2.认识extension(扩展)也是类别的一种;

    【知识扩展】

    1.声明在.h中的方法或者属性变量,外界可以访问;

    2.声明在.m中的属性变量或者方法,只是当前类可以访问;

  • 相关阅读:
    路障【SPFA】
    路障【SPFA】
    糟糕的一天【栈】
    糟糕的一天【栈】
    糟糕的一天【栈】
    糟糕的一天【栈】
    2018年暑假 纪中培训总结
    2018年暑假 纪中培训总结
    2018年暑假 纪中培训总结
    仪仗队【数论】
  • 原文地址:https://www.cnblogs.com/ljcgood66/p/5293641.html
Copyright © 2020-2023  润新知