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) 对象方法调用自己的对象方法    可以

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

转载于:https://www.cnblogs.com/xdl745464047/p/3997508.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 7-6 jmu-java-03面向对象基础-02-构造方法与初始化块是一门Java编程课程,主要讲解面向对象编程中的构造方法和初始化块的概念、使用方法和注意事项。通过学习这门课程,可以更好地理解Java中的面向对象编程思想,掌握构造方法和初始化块的使用技巧,提高Java编程能力。 ### 回答2: 面向对象编程中,我们经常需要创建多个对象,每个对象都有各自独有的属性和方法。在创建对象的过程中,我们需要对对象进行初始化,即设置对象的属性和调用对象方法。在Java编程语言中,构造方法和初始化块是两种非常重要的初始化对象的方式。 构造方法是一种特殊的方法,可以在创建对象时调用,用于初始化对象的属性和执行一些必要的操作。构造方法名必须相同,并且没有返回值。在构造方法中,我们可以设置对象属性的默认值,传入参数初始化对象属性的值,或执行一些其他的操作。如果没有定义构造方法,Java会自动添加一个无参构造方法。 初始化块是在加载时执行的一段代码块,可以用于初始化静态属性或实例属性。初始化块可以有多个,按照定义的顺序执行,并且可以包含任意合法的Java语句。静态初始化块只会在加载时执行一次,而实例初始化块则在对象创建时每次都会执行一次。 构造方法和初始化块都是在对象创建时进行初始化的过程,但是两者还是存在一些区别。首先,构造方法只能用于初始化实例属性,而初始化块既可以初始化静态属性也可以初始化实例属性。其次,构造方法可以接受参数,根据传入的参数初始化实例属性的值,而初始化块不能接受参数。 在实际编程中,我们需要根据实际需求选择合适的初始化方式。如果只需要初始化实例属性,可以使用构造方法来进行初始化;如果还需要初始化静态属性,可以使用静态初始化块;如果需要在创建对象时执行一些复杂的操作,可以使用初始化块。通过灵活使用构造方法和初始化块,我们可以更好地进行对象初始化,提高程序的性能和可维护性。 ### 回答3: 在Java中,构造方法和初始化块都是用来初始化对象的。它们可以执行变量初始化、方法调用和其他操作。本篇文章将主要介绍构造方法和初始化块的区别和作用。 构造方法 构造方法是一种特殊的方法,其作用是创建对象时初始化对象的状态。每个都至少拥有一个构造方法,并且构造方法的名称必须与名相同。构造方法没有返回型,并且不能被声明为final、static或abstract。在Java中,构造方法有以下特点: 1. 构造方法没有返回型 2. 构造方法的名称必须与名完全相同 3. 构造方法可以重载,即同一个中可以定义多个不同的构造方法,只需要使用不同的参数列表即可 4. 如果没有定义构造方法,则Java编译器会为自动添加一个默认的构造方法 构造方法的作用主要有两个: 1. 初始化实例变量:构造方法可以在对象创建时给实例变量赋初值,为了方便,在Java中,经常将对象属性的初始化操作放到构造方法里实现。 2. 对象创建时执行的操作:构造方法可以执行一些对象创建时必要的操作,比如打开文件、建立网络连接等操作。 初始化块 初始化块是一个没有任何修饰符的代码块,它可以出现在中的任何地方。初始化块在对象创建时执行,它可以用来对静态属性或实例属性进行初始化。初始化块的主要作用是为实例的属性提供默认值。 在Java中,初始化块有以下特点: 1. 初始化块没有任何修饰符。 2. 初始化块不像方法一样需要被调用,它会在被加载时自动执行。 3. 初始化块可以定义多个,且执行顺序按照定义的顺序执行。 4. 初始化块和构造方法区别是:构造方法是为了初始化对象时的属性值,而初始化块是为了初始化对象创建时必要的操作。 总结 构造方法和初始化块都是用来初始化对象,在Java中,构造方法主要用来在对象创建时初始化实例变量或执行一些必要的操作,初始化块主要用来为实例的属性提供默认值。它们的主要区别在于: 1. 构造方法是构造对象的,初始化块是初始化对象的。 2. 构造方法是有参数的,而初始化块是没有参数的。 3. 构造方法必须显式地被调用,而初始化块则是在被加载时自动地执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值