• 03-类方法与对象方法的区别


     

    1、基本概念

      由对象来调用的方法称为对象方法

      直接可以用类名来执行(调用)的方法(类本身会在内存中占据存储空间,里面包含有类对象方法的列表)称为类方法。 

    注:不是只有类方法列表存储在类的空间,对象方法列表也存储在类的空间。 

    很好理解,因为不管是类方法还是对象方法,它们的声明都在@interface @end之间  ;实现都在@implementation @end之间。

    2、类方法和对象方法对比

      (1) 对象方法

        1> 以减号 - 开头   

        2> 所有数据类型(返回值、参数)都必须写在小括号()里面,而且只有数据类型可以写在小括号()里面;

          3> 方法名遵循驼峰原则;

        4> 如果没有参数,方法名后面什么都不写,例如 - (void)lookMyPhone;

        5> 一个参数对应一个冒号 : ,冒号 也是方法名的一部分; 

          例如:- (void)sendMessage:(char *)message withPhoneNumber:(char *)number;

               方法名是  sendMessage:withPhoneNumber:

        6> 减号 - 不是方法名的一部分;

        7> 只能让对象调用,没有对象,这个方法根本不可能被执行;

        8> 对象方法可以访问实例变量(成员变量);

        9> 对象方法既可以调用对象方法,也可以调用类方法。

    此处个人感觉需要注意的是:对象 和 对象方法 是不同的概念
         (1)对象方法只能让对象调用;类方法只能让类名调用。
         (2)对象不能调用类方法,但是对象方法可以调用类方法(这一点初学时容易迷糊)

     (3) 类方法

        1> 以加号 + 开头

        2> 所有数据类型(返回值、参数)都必须写在小括号()里面,而且只有数据类型可以写在小括号()里面;

        3> 方法名遵循驼峰原则;

        4> 如果没有参数,方法名后面什么都不写,例如 + (void)lookMyPhone;

        5> 一个参数对应一个冒号:,冒号:也是方法名的一部分;

          例如:+ (void)sendMessage:(char *)message withPhoneNumber:(char *)number;

              方法名是  sendMessage:withPhoneNumber: 

        6> 加号 + 不是方法名的一部分。

        7> 类方法只能用类名调用,对象不能调用

        8> 类方法不能访问实例变量(成员变量)

        9> 使用场合:当不需要访问成员变量的时候,尽量使用类方法

        10> 类方法可以调用自己的类方法,但不能调用自己,会出现死循环。

        11> 类方法可以作为工具方法。

      (3) 类方法可以和对象方法重名(即方法名完全一样),但是二者却是两个完全不同的方法,用方法前面的+ -号区别。

     3、使用场合不同

      (1)当方法中需要访问实例变量(成员变量)的时候,一定不能使用类方法,只能使用对象方法;

      (2)当方法中不需要访问实例变量(成员变量)的时候,类方法和对象方法都可以使用,但是尽量使用类方法;因为使用类方法可以节省内存,提高效率。

    4、类方法和对象方法之间调用的区别

      (1) 类方法调用自己的类方法      可以

         (2) 类方法调用自己的对象方法     不可以

         (3) 对象方法调用自己的类方法     可以

         (4) 对象方法调用自己的对象方法    可以

    注:类方法在调用类方法的时候,不能调用自己,会出现死循环。

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    UML学习——用例图(二)
    servlet相关生命周期(二)
    UML 学习——UML概述(一)
    servlet概述(一)
    java 核心编程——线程之线程控制(五)
    java 核心编程——线程之线程池(ExecutorService)(四)
    java 核心编程——线程之线程组(四)
    java 核心编程——线程之定时器(TimerTask)(三)
    java 核心编程——线程之线程的开发方法(二)
    java 核心编程——线程之线程的基本概念(一)
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/3997508.html
Copyright © 2020-2023  润新知