lkm*_*lkm 7 java methods programming-languages function
我是一名java程序员,正在尝试理解方法(java方法)和函数(例如c ++)之间的区别.我曾经认为它们是相同的,只是不同编程语言的不同命名约定.但是现在我知道他们不是,我无法理解差异.
我知道一个方法涉及一个类的实例,并且可以访问类数据(成员变量),而一个函数不能(?).那么函数有点像静态方法吗?
看到这里我读到的解释让我想到了这一点.
函数只是程序中部分代码的通用名称。“方法”一词是函数的同义词。“子例程”和“过程”等也是如此。
Java 和 C++ 函数在很大程度上是完全相同的。
“方法”一词往往用于与实例关联的子例程,而“函数”则往往用于全局/静态的子例程。
但即便如此,“方法”也是由编译器生成的,就好像它们是“函数”一样。
考虑这个 C++ 代码:
class Foo
{
public:
void DoFoo(int param)
{
printf("%d, %d\n", param, member);
}
private:
int member;
};
int main()
{
Foo f;
f.DoFoo(42);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器生成与此等效的代码:
struct Foo
{
int member;
};
void Foo_DoFoo(Foo* this, int param)
{
printf("%d, %d\n", param, this->member);
}
int main()
{
Foo f;
Foo_DoFoo(&f, 42);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以“方法”和“函数”之间的区别只是一种约定。