使った別の合成メソッドが生成されます。コードの量が減ります。キーワードに言えることですが、生成されるコードを調べてみれば、そこでどのような魔法が使われているかを理解できます。投稿を確認してみてください。元に翻訳・加筆したものです。詳しくは元記事をご覧ください。短くて使いやすいデフォルト引数を利用すると、ボイラープレートを書くことなく関数のオーバーロードを実現できます。機能と同じように、この機能も魔法のように便利です。その秘密を知りたいと思いませんか?この記事では、デフォルト引数の内部の仕組みを紹介します。関数のオーバーロードが必要な場合、同じ関数を複数回実装する代わりに、デフォルト引数を使うことができます。SqueakyToy}デフォルト引数はコンストラクタにも適用できます。デフォルト値のオーバーロードを認識しません。アノテーションを追加します。コードを見てみましょう。つの関数を生成していることがわかります。受け取り、デフォルト引数が使われない場合に呼び出されます。デフォルト引数が使われたときに呼び出されます。違うのかを見てみましょう。パラメータの値は、デフォルト引数が渡された引数の数と、そのインデックスに基づいて計算されます。関数を呼び出すかを、このパラメータの値に基づいて判断します。引数がデフォルト引数を使っています。値をデフォルト値で置き換えなければならないことを認識できます。パラメータの動作を確認するため、もう少し複雑な例を見てみましょう。デフォルト引数として使うようにします。myDoggo)}逆コンパイルしたコードはどうなったでしょうか。この計算の仕組みは次のようになります。演算を使って次のように評価されます。適用されたビットマスクから、どのパラメータをデフォルト値と置き換えるかを計算できます。なっていたことに気づいたかもしれません。関数ではこの値が使われることはありません。このパラメータは、オーバーライドする関数でデフォルト値をサポートするために使用されています。デフォルト引数と継承デフォルト引数がある関数をオーバーライドすると、何が起きるでしょうか。先ほどの例を次のように変更してみましょう。デフォルト値を設定しようとしても、次のように表示され、許可されません。次のようになっています。呼び出しが将来的にサポートされるという意味なのでしょうか。この点については、成り行きを見守るしかありません。