見出し画像

UnityLearn Scripting Tutorial -Overloading-日本語

UnityLearnのチュートリアルを日本語に翻訳したものです。
素人の翻訳なので間違いがあると思います。
間違いを見つけた人はコメントでおしえていただけると嬉しいです。

日本語訳

オーバーロードは、1つのメソッドに複数の定義を与えることができるプロセスです。

つまり、2つの異なることをする同じ名前のメソッドを定義できるのです。

2つのものを足し合わせるメソッドが必要だったとしましょう。

2数を足し合わせることを定義したAddNumber()メソッドを作りました。

しかし、文字列(string)を足し合わせるときは、動作が異なるので、AddString()という新しいメソッドが必要になります。

これは問題なく動作します。問題は本質的には同じことをしている2つの異なるメソッド名を覚えなければならないということです。

良い方法は、Add()というメソッドをオーバーロードして、数字、文字列どちらでも動作するようにすることです。

ここに、Add()という名前の2つの数字を受け取り、1つの数字を返すメソッドがあります。

すべてのメソッドにはシグネチャーと呼ばれるものがあります。

シグネチャーはメソッド名とパラメーターリストで構成されるものです。

同一スコープ内で2つのメソッドが同じシグネチャーを持つことはできません。

新しいメソッドに同じ名前を付けるが、シグネチャーを別のものにすることで、メソッドをオーバーライドできます。

先ほどの例を使うと、Add()メソッドをオーバーライドすることで、文字列を足す新しいメソッドを作れます。

注意すべきところは、新しいAdd()メソッドは同じ名前を持つが、パラメーターリストが異なることです。

シグネチャーが異なるので、これは許可されます。

ほかのクラスから、Add()メソッドにアクセスするこき、2つの種類があることがわかります。

メソッドに渡した引数に基づいて、正しい種類が選ばれます。

2つの数字を入れることで、その数字を足すメソッドが実行されます。

同様にして、2つの文字列を渡した時は、その文字列を足すメソッドが実行されます。

システムがオーバーライドされた実行するメソッドの正しい種類を決めようとする時、次の3つのことのうち1つのことが発生します。

1つめは、渡されたパラメーターが完全一致するとき、そのオーバーライドされたメソッドが実行されます。

完全一致するものがない時、システムは、可能なすべての組み合わせをみて、変換の必要が最も少ないものを選びます。

最後に、可能な組み合わせがない場合、または、変換する量が同じものが複数ある時、エラーが発行されます。

<終>
———————————————————————

Summary

・オーバーロードにより引数の異なる同名の関数が作成できるようになり、使用者への負担を減らす事ができる。

———————————————————————

そのほかの日本語訳の記事はこちらから。


この記事が気に入ったらサポートをしてみませんか?