メソッドと関数の違いは何ですか?

1824
willc2 2008-10-01 13:45.

誰かがOOPコンテキストでのメソッド関数の簡単な説明を提供できますか?

30 answers

1921
Andrew Edgecombe 2008-10-01 14:00.

関数は名前で呼ばれるコードの一部です。操作するデータ(つまりパラメーター)を渡すことができ、オプションでデータ(戻り値)を返すことができます。関数に渡されるすべてのデータは明示的に渡されます。

この方法は、オブジェクトに関連付けられた名前によって呼び出されるコードの一部です。ほとんどの点で、2つの重要な違いを除いて、関数と同じです。

  1. メソッドは、呼び出されたオブジェクトに暗黙的に渡されます。
  2. メソッドは、クラス内に含まれるデータを操作できます(オブジェクトはクラスのインスタンスであり、クラスは定義であり、オブジェクトはそのデータのインスタンスであることを思い出してください)。

(これは、スコープなどの問題を無視した、簡単な説明です。)

991
Aaron 2008-10-01 13:51.

メソッドはオブジェクト上にあります。
関数はオブジェクトから独立しています。

JavaとC#の場合、メソッドのみがあります。
Cの場合、関数のみがあります。

C ++とPythonの場合、クラスに参加しているかどうかによって異なります。

244
Michael Burr 2008-10-01 13:48.

「メソッド」「関数」のオブジェクト指向の単語です。これでほぼすべてです(つまり、実際の違いはありません)。

残念ながら、ここでの答えの多くは、複雑で意味のある違いがあるという考えを永続化または前進させていると思います。

本当に-それほど多くはありません。同じことを表す言葉が違うだけです。

【後期追加】


実際、Brian Nealがこの質問へのコメントで指摘したように、C ++標準では、メンバー関数を参照するときに「メソッド」という用語を使用することはありません。一部の人々は、C ++が実際にはオブジェクト指向言語ではないことを示していると考えるかもしれません。しかし、私はそれを、かなり賢い人々のグループが、別の用語を使用する特に強い理由があるとは思わなかったことを示していると考えたいと思います。

110
Gustavo Rubio 2008-10-01 14:33.

一般に、メソッドはクラスに属する関数であり、関数はコードの他のスコープにある可能性があるため、すべてのメソッドが関数であると述べることができますが、すべての関数がメソッドであるとは限りません。

次のPythonの例を見てください。

class Door:
  def open(self):
    print 'hello stranger'

def knock_door:
  a_door = Door()
  Door.open(a_door)

knock_door()

与えられた例は、「open」と呼ばれるメソッドまたはアクションを持つ「Door」と呼ばれるクラスを示しています。これは、クラス内で宣言されているため、メソッドと呼ばれます。関数を定義する「def」がすぐ下にあるコードの別の部分があります。これはクラス内で宣言されていないため関数です。この関数は、ご覧のとおり、クラス内で定義したメソッドを呼び出し、最後に関数が実行されます。単独で呼び出されます。

ご覧のとおり、どこでも関数を呼び出すことができますが、メソッドを呼び出す場合は、メソッドが宣言されているクラスと同じタイプの新しいオブジェクト(Class.method(object))を渡すか、呼び出す必要があります。少なくともPythonでは、オブジェクト内のメソッド(object.Method())。

メソッドは1つのエンティティでしか実行できないものと考えてください。したがって、Dogクラスがある場合は、そのクラス内でのみ樹皮関数を使用するのが理にかなっています。これはメソッドです。Personクラスもある場合は、人間と犬の両方に餌を与えることができるので、どのクラスにも属さない関数「feed」を記述します。特にどのクラスにも属さないので、その関数を呼び出すことができます。

67
Duc Filan 2017-10-08 14:07.

覚える簡単な方法:

  • Fの慰め→ FのREE(無料オブジェクトまたはクラスに属していないこと)
  • M ethod→ M燃えさし(オブジェクトまたはクラスのメンバー)
44
Jorgesys 2014-10-29 13:08.

関数メソッドの主な違いの非常に一般的な定義:

関数はクラスの外部で定義され、メソッドはクラスの内部およびクラスの一部で定義されます。

31
OscarRyz 2008-10-01 14:21.

ここを読みたくなったら、「OOメソッドの紹介」です。

オブジェクト指向パラダイムの背後にある考え方は、ソフトウェアが..よく「オブジェクト」で構成されていることを「脅かす」ことです。実世界のオブジェクトにはプロパティがあります。たとえば、従業員がいる場合、従業員には名前、従業員ID、役職があり、部門に属しているなどです。

オブジェクトは、その属性を処理し、それらに対していくつかの操作を実行する方法も知っています。従業員が今何をしているのか知りたい場合は、彼に聞いてみましょう。

employe whatAreYouDoing.

その「whatAreYouDoing」は、オブジェクトに送信される「メッセージ」です。オブジェクトはその質問に答える方法を知っており、質問を解決するための「方法」があると言われています。

したがって、オブジェクトがその動作を公開する必要がある方法は、メソッドと呼ばれます。したがって、メソッドはアーティファクトオブジェクトが何かを「実行」する必要があるということです。

他の可能な方法は次のとおりです

employee whatIsYourName
employee whatIsYourDepartmentsName

一方、関数はプログラミング言語がデータを計算する方法です。たとえば、16を返す関数addValues(8、8)がある場合があります。

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

最初の人気のあるプログラミング言語(fortran、c、pascalなど)はオブジェクト指向パラダイムをカバーしていなかったため、これらのアーティファクトを「関数」と呼ぶだけです。

たとえば、Cの前の関数は次のようになります。

int addValues( int x, int y ) 
{
   return x + y;
}

オブジェクトに何らかのアクションを実行するための「関数」があると言うのは「自然」ではありません。関数は数学的なものに関連しているのに対し、従業員は数学をほとんど持っていないためですが、関数とまったく同じように実行するメソッドを使用できます。たとえば、Javaでは、これは同等のaddValues関数になります。

public static int addValues( int x, int y ) {
    return x + y;
}

おなじみですか?これは、JavaのルーツがC ++であり、C ++がCであるためです。

最後は単なる概念であり、実装では同じように見えるかもしれませんが、オブジェクト指向ドキュメントではこれらはメソッドと呼ばれています。

これは、Javaの以前のEmployeeオブジェクトの例です。

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
        return this.name;
    }
    public String whatsYourDeparmentsName(){
         return this.department.name();
    }
    public String whatAreYouDoing(){
        return "nothing";
    } 
    // Ignore the following, only set here for completness
    public Employee( String name ) {
        this.name = name;
    }

}

// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Output:
Employee John is doing nothing.

違いは、それが適用される「ドメイン」にあります。

AppleScriptには、ある時点でOOが持っていた「自然言語」マフォアのアイデアがあります。たとえば、Smalltalk。これを読んだ後、オブジェクトのメソッドを理解するのが合理的に簡単になることを願っています。

注:コードは、単なる例としてコンパイルするものではありません。投稿を自由に変更して、Pythonの例を追加してください。

19
TheSoftwareJedi 2008-10-01 13:56.

OOの世界では、この2つは一般的に同じことを意味するために使用されます。

純粋数学とCSの観点から、関数は同じ引数(f(x、y)=(x + y))で呼び出されたときに常に同じ結果を返します。一方、メソッドは通常、クラスのインスタンスに関連付けられています。繰り返しになりますが、最近のほとんどのオブジェクト指向言語では、ほとんどの場合「関数」という用語は使用されていません。多くの静的メソッドは、通常、状態がないため(常に真であるとは限りません)、関数に非常によく似ています。

18
Mike Tunnicliffe 2008-10-01 13:55.

関数がコードのブロックであるとしましょう(通常は独自のスコープを持ち、場合によっては独自のクロージャを持ちます)。これはいくつかの引数を受け取り、結果を返すこともあります。

メソッドは、オブジェクトが所有する関数です(一部のオブジェクト指向システムでは、クラスが所有していると言った方が正確です)。オブジェクト/クラスによって「所有」されているということは、オブジェクト/クラスを介してメソッドを参照することを意味します。たとえば、Javaでは、オブジェクト「door」が所有するメソッド「open()」を呼び出す場合は、「door.open()」と記述する必要があります。

通常、メソッドは、オブジェクト/クラス内での動作を説明するいくつかの追加属性も取得します。たとえば、メソッドを呼び出すことができるオブジェクト(またはクラス)を定義する可視性(カプセル化のオブジェクト指向の概念に関連)。

多くのオブジェクト指向言語では、すべての「関数」が何らかのオブジェクト(またはクラス)に属しているため、これらの言語にはメソッドではない関数はありません。

16
Statement 2008-10-01 13:52.

メソッドはクラスの関数です。通常の専門用語では、人々は方法と機能をあちこちで交換します。基本的に、それらは同じものと考えることができます(グローバル関数がメソッドと呼ばれるかどうかはわかりません)。

http://en.wikipedia.org/wiki/Method_(computer_science)

14
Bradley Mazurek 2008-10-01 14:54.

関数は数学的な概念です。例えば:

f(x,y) = sin(x) + cos(y)

関数f()は、2番目のパラメーターのコサインに追加された最初のパラメーターのsinを返すことを示しています。それはただの数学です。たまたま、sin()とcos()も関数です。関数には別のプロパティがあります。同じパラメータを持つ関数を呼び出すと、同じ結果が返されるはずです。

一方、メソッドは、オブジェクト指向言語のオブジェクトに関連する関数です。これには、1つの暗黙的なパラメーターがあります。それは、作用を受けるオブジェクト(およびその状態)です。

したがって、メソッドg(x)を持つオブジェクトZがある場合、次のように表示される可能性があります。

Z.g(x) = sin(x) + cos(Z.y)

この場合、前の関数の例と同じように、パラメーターxが渡されます。ただし、cos()のパラメーターは、オブジェクトZの内部にある値です。Zとその内部にあるデータ(Zy)は、Zのg()メソッドの暗黙のパラメーターです。

13
Abdullah Leghari 2014-02-06 19:03.

関数またはメソッドは、いくつかの操作を実行し、オプションで値を返す、名前付きの呼び出し可能なコードです。

C言語の用語関数が使用されています。JavaC#の人々はそれをメソッドと言うでしょう(そしてこの場合の関数はクラス/オブジェクト内で定義されます)。

A C ++プログラマは、用語「方法」であるため、また、C / C ++プログラマのみの可能性が高い機能を呼び出します、彼らは手続き型スタイルのC ++コードまたはC ++のオブジェクト指向の方法をやっているを作成している場合に応じて、(関数や、時にはメソッドを呼び出すことができますC / C ++の文献ではあまり使用されていません)。

次のような名前を呼び出すだけで関数を使用できます。

result = mySum(num1, num2);


最初に次のようにオブジェクトを参照してメソッドを呼び出します。

result = MyCalc.mySum(num1,num2);
13
Jaimin Patel 2016-01-12 16:13.

歴史的に、「メソッド」は値を返さないものであり、「関数」は値を返すものであるという微妙な違いがあったかもしれません。各言語には、特別な意味を持つ用語の独自のレキシコンがあります。

では、「C」、単語「機能」を意味プログラムルーチンを

ではJavaの、用語「機能」は特別な意味を持ちません。一方、「メソッド」は、クラスの実装を形成するルーチンの1つを意味します。

ではC#のよう翻訳します:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

しかし、実際には、2つの概念に実際には違いはないことを繰り返します。Javaに関する非公式の議論で「関数」という用語を使用すると、人々はあなたが「メソッド」を意味していると見なして続行します。Javaに関する適切なドキュメントやプレゼンテーションで使用しないでください。使用すると、ばかげているように見えます。

11
Noname 2008-12-03 23:47.

関数は、データを操作するために使用できるロジックのセットです。

一方、メソッドは、それが属するオブジェクトのデータを操作するために使用される関数です。したがって、技術的には、クラスに完全には関連していないがクラスで宣言されている関数がある場合、それはメソッドではありません。それは悪いデザインと呼ばれています。

9
Statement 2008-10-01 13:57.

クラスのメソッドは、オブジェクトと呼ばれるクラスのインスタンスに作用します。

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}
9
Mark Brittingham 2008-10-01 13:59.

ObjectPascalやC ++などのオブジェクト指向言語では、「メソッド」はオブジェクトに関連付けられた関数です。したがって、たとえば、「Dog」オブジェクトには「bark」関数があり、これは「メソッド」と見なされます。対照的に、「StrLen」関数はスタンドアロンです(引数として提供される文字列の長さを提供します)。したがって、それは単なる「機能」です。Javascriptも技術的にはオブジェクト指向ですが、C ++、C#、Pascalなどの本格的な言語と比較して多くの制限に直面しています。それにもかかわらず、その区別は依然として保持されるべきです。

追加の事実:C#は完全にオブジェクト指向であるため、スタンドアロンの「関数」を作成することはできません。C#では、すべての関数がオブジェクトにバインドされているため、技術的には「メソッド」です。キッカーは、C#でそれらを「メソッド」と呼ぶ人はほとんどいないということです。実際に区別する必要がないため、「関数」という用語を使用するだけです。

最後に、Pascalの達人がここで私に飛びつくことがないように、Pascalは「関数」(値を返す)と「プロシージャ」を区別します。もちろん、値を返すかどうかを選択することはできますが、C#はこの区別を明示的に行いません。

9
Sam Stokes 2008-10-01 15:20.

Pythonについて言及したので、以下は、ほとんどの最新のオブジェクト指向言語におけるメソッドとオブジェクトの関係を説明するのに役立つかもしれません。一言で言えば、彼らが「メソッド」と呼ぶものは、(他の回答が指摘しているように)追加の引数が渡される関数ですが、Pythonはそれをほとんどの言語よりも明示的にします。

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")

次に、関数greet_with_greeterとメソッドを比較しますgreet。唯一の違いは、最初のパラメーターの名前です(関数では「greeter」と呼び、メソッドでは「self」と呼びました)。したがってgreetgreet_with_greeter関数を使用するのとまったく同じ方法でメソッドを使用できます(クラス内で定義したため、「ドット」構文を使用してメソッドを取得します)。

Greeter.greet(hello_greeter, "World")

だから私は効果的にメソッドを関数に変えました。関数をメソッドに変えることはできますか?さて、Pythonでは定義後にクラスをいじることができるので、試してみましょう。

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

はい、関数greet_with_greeterはメソッドとしても知られていgreet2ます。これは、メソッドと関数の唯一の本当の違いを示しています。を呼び出すことによってオブジェクトの「オン」でメソッドを呼び出すobject.method(args)と、言語は魔法のようにそれをに変換しmethod(object, args)ます。

(OOの純粋主義者は、メソッドは関数とは異なるものであると主張するかもしれません。高度なPythonやRuby、またはSmalltalkに入ると、そのポイントがわかり始めます。また、一部の言語では、メソッドにオブジェクトのビットへの特別なアクセスが許可されます。主な概念上の違いは、依然として隠された余分なパラメーターです。)

8
Dirk Schumacher 2012-04-13 23:50.

私にとって:メソッドと関数の機能は、私が同意すれば同じです:

  • 関数は値を返す場合があります
  • パラメータを期待するかもしれません

他のコードと同じように、オブジェクトを配置し、その結果としてオブジェクトを取得する場合があります。その間、オブジェクトの状態が変わる可能性がありますが、基本的な機能は変わりません。

オブジェクトまたは他のコードの関数の呼び出しで定義が異なる場合があります。しかし、それは言葉の違いのためのものではなく、それが人々がそれらを交換する理由ですか?私が注意する計算の例に言及します。私は計算をするために雇用者を雇うので:

new Employer().calculateSum( 8, 8 );

そうすることで、私は雇用主が計算に責任を持つことに頼ることができます。彼がもっとお金を欲しがっているなら、私は彼を解放し、未使用の従業員を処分するという炭水化物コレクターの機能に残りを任せて、新しい従業員を雇います。

メソッドがオブジェクト関数であり、関数が接続されていない計算であると主張しても、私は役に立ちません。関数記述子自体、理想的には関数のドキュメントから、必要なものと返されるものがわかります。残りの部分は、オブジェクトの状態を操作するようなもので、私にはあまり透過的ではありません。私は、関数とメソッドの両方が、それらがどのようにそれを行うかを詳細に知る必要なしに、彼らが主張するものを提供および操作することを期待しています。純粋な計算関数でさえ、コンソールの状態を変更したり、ログファイルに追加したりする場合があります。

5
marcj 2008-10-01 13:53.

私の理解では、メソッドはクラスで実行できる任意の操作です。これは、プログラミングで使用される一般的な用語です。

多くの言語では、メソッドは関数とサブルーチンで表されます。ほとんどの言語がこれらに使用する主な違いは、関数が呼び出し元に値を返す場合と、サブルーチンが返さない場合があることです。ただし、多くの現代言語には関数しかありませんが、オプションで値を返すことはできません。

たとえば、猫について説明したいとし、あくびをしたいとします。Yawnメソッドを使用してCatクラスを作成します。これは、戻り値のない関数である可能性があります。

5
Captain Segfault 2008-10-01 14:00.

一次近似では、メソッド(C ++スタイルのオブジェクト指向)は、クラスの一部である関数であるメンバー関数の別の単語です。

C / C ++のような言語では、クラスのメンバーではない関数を持つことができます。クラスに関連付けられていない関数をメソッドとは呼ばないでください。

5
SamyCode 2017-12-15 04:03.

非常に単純な答えであるべきものを複雑にしすぎないようにしましょう。メソッドと関数は同じものです。関数は、クラスの外部にある場合は関数を呼び出し、クラスの内部に記述されている場合はメソッドを呼び出します。

4
Morfidon 2015-04-01 12:34.

IMHOの人々は、オブジェクト内の関数を参照したいときに、プログラマー間のコミュニケーションを容易にするための新しい単語を発明したかっただけです。

メソッドとは、クラス内の関数を意味します。関数とは、単にクラス外の関数を意味します。

真実は、両方の単語が機能を説明するために使用されているということです。間違って使用しても何も起こりません。どちらの単語も、コードで達成したいことをよく表しています。

関数は、何かをする役割(関数)を果たさなければならないコードです。この方法は、ある方法この問題を解決します。

それは同じことをします。同じことです。非常に正確で慣例に従いたい場合は、オブジェクト内の関数としてメソッドを呼び出すことができます。

4
Akshay Khale 2015-11-11 04:23.

関数は、主にプロシージャ指向プログラミングに属する概念であり、関数はデータを処理して値を返すことができるエンティティです。

メソッドはオブジェクト指向プログラミングの概念であり、メソッドはクラスのメンバーであり、ほとんどの場合、クラスメンバーで処理を行います。

3
Marvin 2013-07-30 18:02.

私は専門家ではありませんが、これは私が知っていることです:

  1. 関数はC言語の用語であり、コードの一部を指し、関数名はこの関数を使用するための識別子になります。

  2. メソッドはOO用語であり、通常、関数パラメーターにthisポインターがあります。Cのようにこのコードを呼び出すことはできません。呼び出すには、オブジェクトを使用する必要があります。

  3. invokeメソッドも異なります。ここで意味を呼び出して、このコードのアドレスを見つけます。C / C ++の場合、リンク時間は関数記号を使用して検索します。

  4. Objecive-Cは異なります。データ構造を使用してアドレスを見つけるためのC関数を意味する呼び出し。これは、実行時にすべてがわかっていることを意味します。

2
f-society 2017-04-24 13:11.

他の多くの人がすでに回答していることは知っていますが、以下は単純でありながら効果的な1行の回答であることがわかりました。ここで他の回答よりも見栄えはよくありませんが、注意深く読むと、メソッドと関数について知っておく必要のあるすべてが揃っています。

メソッドは、定義されたレシーバーを持つ関数です。OOP用語では、メソッドはオブジェクトのインスタンス上の関数です。

2
Siraj Alam 2017-12-16 08:42.

メソッドと関数の違い

Microsoftでこのドキュメントを読んでから

実行可能コードを含むメンバーは、まとめてクラスの関数メンバーと呼ばれます。前のセクションでは、関数メンバーの主要な種類であるメソッドについて説明しました。このセクションでは、C#でサポートされている他の種類の関数メンバー(コンストラクター、プロパティ、インデクサー、イベント、演算子、ファイナライザー)について説明します。

したがって、メソッドは関数のサブセットです。すべてのメソッドは関数ですが、すべての関数がメソッドでconstructorあるとは限りません。たとえば、aはメソッドとは言えませんが、関数です。

2
Aditya 2019-01-17 22:35.

関数-いくつかのロジックを含み、独立 して呼び出す必要があり、クラスの外部で定義される、独立したコード内の関数

メソッド-メソッドは、あるオブジェクトを参照して呼び出され、クラス内で定義される独立したコードです。

1
Lahar Shah 2017-09-29 04:12.

JavaScriptの例を使用したメソッドと関数の説明を次に示します。

test(20, 50); 関数定義であり、いくつかのステップを実行したり、どこかに保存/使用できるものを返すために使用します。

コードを再利用できます。コードを1回定義して、何度も使用します。

同じコードを異なる引数で何度も使用して、異なる結果を生成できます。

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); ここでtest()は、いくつかのオブジェクトのメソッド、または組み込みオブジェクトのカスタム定義されたプロトタイプにすることができます。詳細は次のとおりです。

JavaScriptメソッドは、オブジェクトに対して実行できるアクションです。

JavaScriptメソッドは、関数定義を含むプロパティです。

javascriptの文字列の組み込みプロパティ/メソッド:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

カスタム例:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

たとえば、文字列、配列などのプロパティも定義できます。

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

いくつかの参照:Javascriptオブジェクトメソッド、関数、プロトタイプの詳細

1
yogendra saxena 2019-12-20 21:11.

TL; DR

関数は実行するコードの一部です。
メソッドは、オブジェクト内の関数です。

関数の例:


function sum(){
  console.log("sum")l
}

メソッドの例:

const obj = {
a:1,
b:2,
sum(){
  }
}

したがって、関数内の「this」キーワードは、call、apply、bindで使用しない限り、あまり役に立たないと言うのです。call、apply、bindは、オブジェクト内のメソッドとしてその関数を呼び出すため、基本的には関数をメソッドに変換します

1
Sapphire_Brick 2019-09-23 01:53.

それらはしばしば交換可能ですが、メソッドは通常クラス内のサブルーチンを参照し、関数は通常クラス外のサブルーチンを参照します。たとえば、Rubyでは:

# function
def putSqr(a)
   puts a ** 2
end


class Math2
   # method
   def putSqr(a)
      puts a ** 2
   end
end

すべて(packageステートメントとimportステートメントを除く)がクラス内になければならないJavaでは、ほとんどの場合、人々はそれらを「メソッド」と呼びます。

Related questions

MORE COOL STUFF

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

世界最小のマルチツールを15ドルでキーチェーンに追加

世界最小のマルチツールを15ドルでキーチェーンに追加

爪| $ 15 | マルボロ&ケインザクロー| $ 15 | Malboro&Kane世界最小のマルチツールであるTheClawをたった15ドルで手に入れましょう。男の子と一緒に冷たいものを割って開けたり、ネジを締めたり、Amazonパッケージを細断したりする場合でも、この悪い男の子はこれまでで最も便利な製品の1つです。

ワンダーウーマンの続編の悪役についてのより多くの噂

ワンダーウーマンの続編の悪役についてのより多くの噂

ワンダーウーマンとしてのガル・ガドット。WaywardPinesは正式に終了しました。

42,000試合で作られた球がスローモーションで燃えるのを見るのは魅力的な光景です

42,000試合で作られた球がスローモーションで燃えるのを見るのは魅力的な光景です

人が2つのマッチを接着するように導くものは何ですか?何があなたをマッチに打ち続け、構造が湾曲していることを発見するのですか?42,000のボールを作るまで、試合を続けなければならない理由は何ですか?しかし、何よりも、これほど魅力的なショーである可能性はどのようにありますか?私はあなたをだますつもりはありません、次に私たちがあなたに残すのは、あなたや私のような人が自由な時間を過ごすことを決定するビデオですボールを作るために必要な試合数を確認します(答えは42です。

サクラメントビーが1950万人のカリフォルニア州の有権者記録を漏らし、ハッカーによって即座に侵害された

サクラメントビーが1950万人のカリフォルニア州の有権者記録を漏らし、ハッカーによって即座に侵害された

写真:AP先月、カリフォルニアの地元新聞が1,900万件以上の有権者記録をオンラインで公開しました。Gizmodoは今週、明らかなランサムウェア攻撃中にレコードが侵害されたことを確認しました。

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

ロシアのフィギュアスケーター、カミラ・バリエバが関与したドーピング事件が整理されているため、チームは2022年北京冬季オリンピックで獲得したメダルを待っています。

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

何千人ものAmazonの買い物客がMulberry Silk Pillowcaseを推奨しており、現在販売中. シルクの枕カバーにはいくつかの色があり、髪を柔らかく肌を透明に保ちます。Amazonで最大46%オフになっている間にシルクの枕カバーを購入してください

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

ラファイエット警察署は、「不審な男性が女性に近づいた」という複数の苦情を受けて、12 月にパデュー大学の教授の捜査を開始しました。

コンセプト ドリフト: AI にとって世界の変化は速すぎる

コンセプト ドリフト: AI にとって世界の変化は速すぎる

私たちの周りの世界と同じように、言語は常に変化しています。以前の時代では、言語の変化は数年または数十年にわたって発生していましたが、現在では数日または数時間で変化する可能性があります。

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

犯罪擁護派のオークランドが暴力犯罪者のロミオ・ロレンゾ・パーハムを釈放

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

認知症を患っている 91 歳のアジア人女性が最近、47 番街のアウター サンセット地区でロメオ ロレンゾ パーハムに襲われました。伝えられるところによると、被害者はサンフランシスコの通りを歩いていたところ、容疑者に近づき、攻撃を受け、暴行を受けました。

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

メリック・ガーランドはアメリカに失敗しましたか?

バイデン大統領の任期の半分以上です。メリック・ガーランドは何を待っていますか?

メリック・ガーランドはアメリカに失敗しましたか?

人々にチャンスを与えることは、人生で少し遅すぎると私は信じています。寛大に。

Language