有人能简单解释OOP环境中的方法与函数吗?
当前回答
函数是一段按名称调用的代码。它可以传递数据以进行操作(即参数),也可以选择返回数据(返回值)。传递给函数的所有数据都是显式传递的。
方法是由与对象关联的名称调用的一段代码。在大多数方面,它与函数相同,但有两个关键区别:
方法隐式传递给调用它的对象。方法能够对包含在类中的数据进行操作(记住对象是类的实例-类是定义,对象是该数据的实例)。
(这是一个简化的解释,忽略了范围等问题)
其他回答
函数是主要属于面向过程编程的概念,其中函数是一个可以处理数据并返回值的实体
方法是面向对象编程的概念,其中方法是类的成员,该类主要对类成员进行处理。
假设函数是一个代码块(通常有自己的作用域,有时也有自己的闭包),它可以接收一些参数,也可以返回结果。
方法是由对象拥有的函数(在某些面向对象的系统中,更正确的说法是由类拥有)。被对象/类“拥有”意味着您通过对象/类引用方法;例如,在Java中,如果要调用对象“door”拥有的方法“open()”,则需要编写“door.open()”。
通常,方法还会获得一些额外的属性,描述它们在对象/类中的行为,例如:可见性(与面向对象的封装概念相关),它定义了可以从哪些对象(或类)调用方法。
在许多面向对象的语言中,所有的“函数”都属于某个对象(或类),因此在这些语言中没有不是方法的函数。
函数或方法是一段命名的可调用代码,它执行一些操作并可选地返回一个值。
在C语言中,使用术语“函数”。Java和C#的人会说它是一个方法(在这种情况下,函数是在类/对象中定义的)。
C++程序员可能会将其称为函数或有时称为方法(取决于他们是在编写过程式C++代码还是以面向对象的方式使用C++,而且只有C/C++的程序员可能会称其为函数,因为C/C++文献中很少使用术语“方法”)。
你只需调用函数的名称,
result = mySum(num1, num2);
您可以通过首先引用其对象来调用方法,
result = MyCalc.mySum(num1,num2);
函数是一组可以用来处理数据的逻辑。
而Method是一个用于处理其所属对象的数据的函数。因此,从技术上讲,如果您有一个与您的类不完全相关但在类中声明的函数,那么它不是一个方法;这被称为糟糕的设计。
在OO世界中,这两个词通常用来表示同一件事。
从纯数学和CS的角度来看,当使用相同的参数(f(x,y)=(x+y))调用函数时,函数将始终返回相同的结果。另一方面,方法通常与类的实例相关联。尽管如此,大多数现代OO语言在很大程度上不再使用术语“函数”。许多静态方法可以很像函数,因为它们通常没有状态(不总是真的)。
推荐文章
- 在支持循环和函数的语言中,是否存在“goto”的合法用例?
- 为什么不使用异常作为常规的控制流呢?
- 如何在方法中访问“静态”类变量?
- 什么是序列化?
- 为什么c#不提供c++风格的'friend'关键字?
- String, StringBuffer和StringBuilder
- 存储库和服务层的区别?
- 每个递归都可以转换成迭代吗?
- 缓冲区是什么意思?
- DDD -实体不能直接访问存储库的规则
- 为什么STL如此严重地基于模板而不是继承?
- 如何在Objective-C中声明类级属性?
- 面向方面编程与面向对象编程
- 什么是ORM,它是如何工作的,我应该如何使用它?
- 我能在服务器端应用程序(PHP、Ruby、Python等)上读取URL的哈希部分吗?