黑马程序员技术交流社区

标题: 每日活动答题加金币or技术分!!! [打印本页]

作者: ★彬★卍囧神    时间: 2014-9-5 10:40
标题: 每日活动答题加金币or技术分!!!
现在推出每日一题按照格式回答合格的加技术分或者金币。小伙伴们帮你们的回答打出来吧,让我们共同进步!!!


第一题:请你说说函数与方法的区别?

答:XXX(有代码的插入代码模式)。

注:答出你的理解就行,复制抄袭不算。

参与人多将持续这个互动



作者: 陨石    时间: 2014-9-5 10:48
函数有独立的内存空间
方法相当于类内部的成员,就像结构成员一样,是在类的内存空间里,统一分配的。
函数相当于静态的方法,声明和实现需要分开。
方法可以在类的作用域里声明并实现,然后当成成员来接接调用。
也可以在实例类的时候,将传给类的参数分配给方法。
函数得通过函数名来调用,要么就通过指针才可以。
不知道我理解的对不对。
作者: cjfire    时间: 2014-9-5 10:56
函数可以在除了interface之外的任何地方进行定义。
方法则属于类。由于这个特性,方法可以用self
函数可以用指针进行调用,而方法可以用SEL传递消息
作者: Rainyday    时间: 2014-9-5 10:57
一个东西,用对象调用的叫方法,直接调函数名的叫函数
方法是oop中的内容 C语言没有方法 它是面向过程的
作者: zhuiyi007    时间: 2014-9-5 11:11
方法是以类和对象为基础的,没有类和对象,就没有方法,调用方法时同样需要用类或者对象才能成功调用。而函数则仅仅封装了一段代码,可以随时调用,与类和对象没有任何关系,谁都可以调用
作者: xiao1015hp    时间: 2014-9-5 11:17
函数都有参数  方法参数列表为空,达到其既定的效果就行
作者: 潘多拉    时间: 2014-9-5 11:29
在java中函数和方法是一回事吧,函数一般是在c中称呼为函数,而在Java中将函数统称为了方法吧
作者: ★彬★卍囧神    时间: 2014-9-5 11:43
OC对象与函数有着本质的区别:

(1)方法的实现只能写在@implementation··@end中,对象方法的声明只能写在@interface···@end中间

(2)对象方法都以-号开头,类方法都以+号开头

(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用

(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation··@end中,但写在@interface···@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。

(5)对象方法归类\对象所有

(6)函数调用不依赖与对象

(7)函数内部不能直接通过成员变量名访问对象的成员变量
作者: 超越自己    时间: 2014-9-5 11:55
在C语言中,函数其最重要的功能就是用来封装一些完成独立功能的代码块  例如
  1. main
复制代码
是c语言言程序的入口函数,当程序启动的时候首先调用main函数。而方法,可以调用函数,来实现方法本身。
作者: 马嘉    时间: 2014-9-5 13:31
在java语言中,函数和方法没有本质区别,函数和方法,是将一些属性和方法封装在类中,在想外界提供服务。
作者: 徐闯楠    时间: 2014-9-7 14:36
C语言中,函数偏重于面向过程,函数的形式分无参和有参两类.无参函数不带回或带回函数值.有参函数在调用和被调用间有数据传递(变量);
有参函数void haha(int x,int y)
{

}
无参函数void haha()
{

}
方法偏重于类,也就是面向对象设计的,其调用则是通过类的对象
作者: Faith_Yee    时间: 2014-9-7 21:50
我觉得吧,方法可以通过函数实现的,函数也可实现某一方法。而面向 “类”而言,函数在函数所在的类里面调用,该函数就叫做函数;如果跨类调用,且该函数不是全局函数,那么该函数就是该类的方法。
作者: longshaocn    时间: 2014-9-7 22:28
1.函数范围是整个文件,只要声明随时随地可以调用;方法属于对象,只有对象可以调用;
2.函数的定义和声明在任意地方都行,方法的声明只能在@infterface 和@end 之间,实现是在@implementation 和@end之间;
在OC中,我是这样理解的!
作者: himym2005    时间: 2014-9-7 23:24
没有本质区别,函数一般用在面向过程的语言中。实现一些面向过程的功能。而方法是面向对象的语言中特有的,它具有面向对象的一些特性。其实在一定意义上他们是相同的,都是为了实现不同平台下的一些类似的功能。
作者: kingloveyy    时间: 2014-9-8 15:51
函数和方法是一个东西,c++里叫函数,java里叫方法,主要是从面向结构和面向对象来的
作者: 王绍明    时间: 2014-9-8 21:16
我们知道在OC方法中对象和类两种,对象和类没有本质的区别,只是书写方式不同,一个以减号开头,一个以加好开头,其他地方一致。在调用的时候常常用指针调用,通过地址进行调用!不要纠结对象方法和类方法的区别,2者本质一致。学习编程语言不要太纠结,了解其运用方式即可!自己见解,供参考!
作者: duzhong    时间: 2014-9-9 14:57
在C中只有函数,没有方法。在OC中,两个都可以存在,不在方法必须要声明必须在@interface  @end中。实现必须放在@implementation  @end中。而函数没有这个限制。知识不能放在@interfce  @end中就行。而且函数与方法很好区分。方法以减号开头,函数后面则有小括号。
作者: 眼瞳╄渲染繁华    时间: 2014-9-10 15:01
在C语言中只有函数,方法只能在主函数main中调用
在OC中方法需在@interface  @end这种声明,@implementation @end中实现。有类方法和对象方法,类方法以+号开头后跟括号(只有数据类型放在放在括号中),对象方法以-号开头,而函数是:数据类型 名称 ()
作者: happyto1021    时间: 2014-9-10 15:21
函数一般是面向过程时的叫法, 方法一般是面向对象时的叫法。
作者: smilezsm    时间: 2014-9-19 11:11
第一题:请你说说函数与方法的区别?
这里说的是OC中的函数与方法
1.编写区域:
方法只能写在@implementation @end之间,
  而函数可以写在文件中的任意位置(@interface @end 之间除外);
2.调用:
对象方法只能由对象来调用,函数的调用不依赖于对象,对象方法也可以调用函数;
3.访问成员变量:
  函数内部不能直接通过成员变量名访问某个对象的成员变量。
作者: zzyy3321    时间: 2014-9-19 11:21
函数独立存在 方法是类和对象的一部分
作者: 闫跃文    时间: 2014-9-22 15:15
答:这个我的博客有写到哦:http://www.cnblogs.com/yanyuewen/p/3984990.html
作者: 卧龙小    时间: 2014-9-22 16:24
主要的区别我感觉是编程思维和思考方式的不同。也是OO 思想和面向过程的不同。
函数侧重点在实现功能,方法其实是种行为,行为依赖于对象,正因为这种行为,给OO思想(面向对象编程的语音JAVA C++ OC C#)提供了 多态 继承的空间,行为是特定的,只是方式不同(举例 吃饭是种行为,人和其动物方式不一样,但行为一样,具备多态的扩展)
作者: 王庆功    时间: 2014-9-22 17:21
1.使用场合不同。面向过程的语言中可以有函数,比如C语言,面向对象的语言中也有函数,比如OC, java,c++.但是方法只会出现在面向对象的语言中。
2.定义方式不同。函数的定义是  返回值类型 函数名(形参1,形参2...)
                 方法(OC中)的定义是  -(返回值类型)方法名:(形参类型)形参1 (形参类型)形参2  当然如果是类方法的话,前面是+号
3.在OC中,函数可以定义在任意在位置(@interface @end除外).而方法必须定义在@implementation@end之间。
4.方法分类方法和对象方法,函数没有这么分
5.方法是在类中开辟存储空间的,对象找方法是通过isa指针,并把方法封装成SEL类型。而函数是在单独的区域中开辟的,函数名就是函数的指针,即函数的入口地址
6.OC中苹果官方类方法的名字比较长,有时候是个句子体现实际意义。但是函数名不像方法名那样,一般是几个单词
7.OC中set方法和get方法,dealloc方法,init方法等有些每个类都会有的方法,但函数每个都会有的是main()函数
8.OC中方法名中也有可能包含:,而函数中只能是数字,字母,下划线
9.方法可以继承,但函数不可以
以上是个人理解。有错误还请大家指出
作者: songxing10000    时间: 2014-9-22 20:43
函数可以独立存在,方法要依托类来存在
作者: AngleMGG    时间: 2014-9-23 00:35
本帖最后由 AngleMGG 于 2014-9-23 00:38 编辑

形式上:在C++中,方法和函数在形式上并没有什么区别,方法通常称为成员函数,但在OC中,方法也可以称为类内的函数,通常以—或+开头,而函数则不需要。
引用上:不管是C++或者是OC中,方法的引用必须建立在对象实体上,通过点语法或者其他方式实现引用,而函数则直接通过函数名调用,可以在任意位置引用函数。

理解有点粗浅:)
作者: longshaocn    时间: 2014-9-26 22:45
本帖最后由 longshaocn 于 2014-9-26 22:46 编辑

1.方法的定义需要以减号开头,而函数不需要;
2.方法的声明和实现需要在@interface   @end和@implementation @end之间,但是函数不需要,函数定义可以在在任何位置;
3.方法的调用只能是oc的对象,函数的调用不局限与对象。4.方法的声明中,返回类型需要用小括号括住,但函数不需要。

作者: Kevinneo    时间: 2014-9-26 23:23
用对象调用的叫方法,直接调函数名的叫函数。方法偏重于类,也就是面向对象设计的,注重每个函数的功能所以叫方法;而函数偏重于面向过程,用来实现某个具体的功能。
作者: 水了个淼    时间: 2014-9-27 08:48

第一题:请你说说函数与方法的区别?
方法
1.对象方法都是以减号 -
2.对象方法的声明必须写在@interface和@end之间
   对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用
4.对象方法归类\对象所有

函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能直接通过成员变量名访问某个对象的成员变
作者: oassuperhan    时间: 2014-9-27 09:17
函数是面向过程的,方法是面向对象的
函数直接在程序文件里定义和实现,方法在类的声明中定义,在类的实现中实现。
函数的定义: 返回值类型  函数名(参数类型1,参数类型2,...);
方法的定义:-(或+)(返回值类型) 方法名:(参数类型1)参数1 方法名2:(参数类型2)参数2 ......


作者: lypin    时间: 2014-10-13 19:41
在java中函数和方法是一样的
作者: 邓熊财    时间: 2015-3-25 16:06
函数是一个整体,而方法只是函数的一部风
作者: Rocky_wlw    时间: 2018-1-25 07:55
潘多拉 发表于 2014-9-5 11:29
在java中函数和方法是一回事吧,函数一般是在c中称呼为函数,而在Java中将函数统称为了方法吧 ...

同意+1~~~~~~~~~~~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2