是的,我正在为此苦苦挣扎。我无法区分它们,因为我读到的每一个解释都不够清晰和富有哲理。有人可以为我澄清这些定义吗?多谢你们。
这些定义与 oop 一样适用于过程编程?谢谢。
是的,我正在为此苦苦挣扎。我无法区分它们,因为我读到的每一个解释都不够清晰和富有哲理。有人可以为我澄清这些定义吗?多谢你们。
这些定义与 oop 一样适用于过程编程?谢谢。
随着时间的推移,人们使用这些术语的方式已经发生了变化(并且可能会不断变化),但如果您正在阅读过去十年左右的文章,它们可能意味着:
函数(又名子程序)是相对独立的、相对独立的代码片段,它们构成了一个更大的程序。
方法是附加到面向对象编程中特定类(或实例)的函数。
属性是面向对象的习惯用法。该术语描述了一个或两个函数(取决于所需的程序行为) - 一个检索值的“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();
}
}
我建议阅读手册类和对象一章。
在 OOP 中,主要结构是对象。
方法是可以应用于对象的命名动作。属性是对象具有的命名值。例如,对象 Human 具有属性“Age”。函数是一个比方法更通用的东西。它只是一个动作,不属于任何对象。但是方法是属于对象的函数。
a)Function 指执行特定任务并返回值的语句块。
b)Procedure 指调用时不返回值的程序的构建块。
c)Method 指对象可以执行的动作。