是的,我也有同样的困扰。每次阅读相关解释时,总是感觉含混不清、充满哲学性。请问是否有人能够为我澄清这些定义?感谢各位。
这些定义同样适用于面向过程编程和面向对象编程吗?谢谢。
是的,我也有同样的困扰。每次阅读相关解释时,总是感觉含混不清、充满哲学性。请问是否有人能够为我澄清这些定义?感谢各位。
这些定义同样适用于面向过程编程和面向对象编程吗?谢谢。
随着时间推移,人们使用这些术语的方式已经发生了变化(并且可能会继续变化),但是如果您阅读最近十年左右编写的文章,以下是它们可能的含义:
Functions(也称为子程序)是相对独立、相对独立的代码片段,它们构成了一个更大的程序。
Methods 是面向对象编程中附加到特定类(或实例)的函数。
Properties 是一种面向对象的惯用语。该术语描述了一个或两个函数(取决于所需的程序行为)-一个“getter”获取值,一个“setter”设置值。按照惯例,属性通常没有太多副作用。 (而它们产生的副作用通常具有有限的作用范围:它们可以验证正在设置的项,通知侦听器进行更改,或将对象的私有数据从公开声明的类型转换为另一种类型。)
函数是将指令组合在一起以实现某个结果的方法。它可以带有参数并返回结果。如果一个函数不返回结果,通常被称为过程。例如:
function drawLine(x1, y1, x2, y2):
// draws a line using Bresenham's algorithm from x1,y1 to x2,y2.
// doesn't return anything
function <number> add(a, b):
// adds a to b and returns the result as a number
return a + b
函数是用来完成特定工作的。例如,当您需要作为矢量图像的一部分绘制一个由3条线组成的多边形时,调用drawLine
三次比将所有行绘制例程放在内联中更方便。
方法(“成员函数”)类似于函数,它们属于类或对象,并通常表示对象/类的动词。例如,类型为Window
的对象通常会有open
和close
方法,这些方法对应于它们所属的对象执行相应的操作。
属性与日常语言中的含义相同,在技术上是指具有专用getter/setter例程的对象/类字段(可以视为方法。有些语言没有属性,可以使用私有字段+get/set方法来实现此行为)。
函数是类似于 trim()
, strlen()
, fopen()
等的独立构造。
function myAbcFunction() { ... }
方法是对象的一种功能。它在类中被定义。属性只是对象的属性:
class MyClass {
public $property; // Public property: $objInstance->property
protected $property2; // Protected property
public function doSth() {
// That's a method. $objInstance->doSth();
}
}
我建议阅读手册的类和对象章节。
a)函数 指执行特定任务并返回值的语句块。
b)过程 指程序的构建块,调用时不返回任何值。
c)方法 指对象可以执行的操作。