zoukankan      html  css  js  c++  java
  • iOS 分类和继承

    iOS 中分类(Categories) 和 继承(Inherit)有相同的功能,但在一些细节上又有差异,简单介绍一下两者的异同。

    分类可以在不知道系统类源代码的情况下,为这个类添加新的方法。分类只能用来添加方法,不能添加成员变量。通过分类增加的方法,系统会认为是该类类型的一部分。比如:

     1 #import <UIKit/UIKit.h>
     2 
     3 @interface UIImage (WB)
     4 
     5 /**
     6  *  返回一张自由拉伸的图片
     7  */
     8 + (UIImage *)resizedImageWithName:(NSString *)name;
     9 
    10 
    11 @end

    UIImage 是系统的类,在不知道UIImage类源代码的情况下,仍然可以通过分类为该类添加新的方法。而且该方法成为了该类型的一部分。若有其他的类继承自UIImage类,则UIImage类的子类全部都拥有 resizedImageWithName 这个方法。

    从这个角度来说,继承和分类一个较大的区别是:子类继承自父类,子类中增加的方法不会成为父类的一部分。即:假设类A继承自 UIImage,在类A中增加了一个 resizedImage 的函数,父类UIImage并不能使用该函数,当有新的类,比如说类B继承自 UIImage时,类B中没有 resizedImage函数。

    但是继承既能够添加方法,也能够添加成员变量。当然,所添加的成员变量,也仅限于在子类中使用。

  • 相关阅读:
    js 复制 浏览器 点击 copy
    php 百度地图 腾讯地图 转换坐标
    Excel PHP html select option 替换
    python教程
    Eclipse 总是在编译的时候卡住
    python+Eclipse+pydev环境搭建1
    python+Eclipse+pydev环境搭建
    Pycharm
    如何卸载eclipse中的pydev
    Eclipse的PyDev插件安装及解决安装后找不到的问题
  • 原文地址:https://www.cnblogs.com/acBool/p/5208177.html
Copyright © 2011-2022 走看看