JavaSilverでメモしたところ備忘録として残しておこうと思います。
オーバーロード
- 一つのクラス内に同じメソッド名で引数の型や数が違うメソッドを複数定義することができる。シグニチャ(メソッド名・引数の型・引数の数)の組み合わせで決められている
- 呼び出す側でメソッド名と引数の組み合わせで合うものがなければコンパイルエラー
戻り値の型は違っていても呼び出せる
変数名だけが異なっている場合、戻り値だけが異なっている場合はコンパイルエラー
オーバーロードの際の型変換
- オーバーロードされた複数のメソッドと一致しない型の引数を渡した場合、そのメソッドを呼び出しているコードがコンパイラにより型変換され対応するメソッドを呼び出すように最適化される
- 配列はObjectクラスのサブクラスであるため配列をObject型で受け取るオーバーロードにより処理することは可能。Object型(参照)の集合を扱う配列とプリミティブ型(値)の集合を扱う配列は扱っている集合の種類に互換性がない
オーバーロード
- 一つのクラス内に同じメソッド名で引数の型や数が違うメソッドを複数定義することができる。シグニチャ(メソッド名・引数の型・引数の数)の組み合わせで決められている
- 呼び出す側でメソッド名と引数の組み合わせで合うものがなければコンパイルエラー
戻り値の型は違っていても呼び出せる
変数名だけが異なっている場合、戻り値だけが異なっている場合はコンパイルエラー
オーバーロードの際の型変換
- オーバーロードされた複数のメソッドと一致しない型の引数を渡した場合、そのメソッドを呼び出しているコードがコンパイラにより型変換され対応するメソッドを呼び出すように最適化される
- 配列はObjectクラスのサブクラスであるため配列をObject型で受け取るオーバーロードにより処理することは可能。Object型(参照)の集合を扱う配列とプリミティブ型(値)の集合を扱う配列は扱っている集合の種類に互換性がない
public class Sample{
public void test (Object val){
System. out. println ("A");
}
public void test(long[] val){
System.out.printin("B");
}
public void test (Object val){
System. out. printin("C");
}
}
public class Main{
public static void main (String[] args) {
new Sample(). test(new int[3])://"C"がしゅつりょくされる
}
}