什么是方法、属性和函数?

8

是的,我也有同样的困扰。每次阅读相关解释时,总是感觉含混不清、充满哲学性。请问是否有人能够为我澄清这些定义?感谢各位。

这些定义同样适用于面向过程编程和面向对象编程吗?谢谢。


谢谢......这些答案非常有用...... - Hans
6个回答

11

随着时间推移,人们使用这些术语的方式已经发生了变化(并且可能会继续变化),但是如果您阅读最近十年左右编写的文章,以下是它们可能的含义:

Functions(也称为子程序)是相对独立、相对独立的代码片段,它们构成了一个更大的程序。

Methods 是面向对象编程中附加到特定类(或实例)的函数。

Properties 是一种面向对象的惯用语。该术语描述了一个或两个函数(取决于所需的程序行为)-一个“getter”获取值,一个“setter”设置值。按照惯例,属性通常没有太多副作用。 (而它们产生的副作用通常具有有限的作用范围:它们可以验证正在设置的项,通知侦听器进行更改,或将对象的私有数据从公开声明的类型转换为另一种类型。)


9

函数是将指令组合在一起以实现某个结果的方法。它可以带有参数并返回结果。如果一个函数不返回结果,通常被称为过程。例如:

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的对象通常会有openclose方法,这些方法对应于它们所属的对象执行相应的操作。

属性与日常语言中的含义相同,在技术上是指具有专用getter/setter例程的对象/类字段(可以视为方法。有些语言没有属性,可以使用私有字段+get/set方法来实现此行为)。


4

Field - 字段是在类或结构中直接声明的任何类型的变量。字段是其所属类型的成员。

Property - 属性是一个成员,提供了一种灵活的机制来读取、写入或计算私有字段的值。

Method - 方法是一个包含一系列语句的代码块。在C#中,每个执行的指令都是在方法的上下文中执行的。

Procedure - 过程是一个包含一系列语句的代码块。

Function - 函数是一个包含一系列语句的代码块,返回操作结果。


2

函数是类似于 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();
    }
}

我建议阅读手册的类和对象章节。


我认为那些属性是字段,而PHP文档并不适合解释它。 - Damian Leszczyński - Vash

1
在面向对象编程中,主要结构是对象。
方法是可以应用于对象的命名操作。 属性是对象具有的命名值。例如,人类对象具有属性“年龄”。 函数比方法更为通用。它只是一个不属于任何对象的动作。但方法是属于对象的函数。

1

a)函数 指执行特定任务并返回值的语句块。

b)过程 指程序的构建块,调用时不返回任何值。

c)方法 指对象可以执行的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接