オーバーロード
日本語 | 複数読み込み |
英語 | overload |
ふりがな | おーばーろーど |
フリガナ | オーバーロード |
同じメソッド名・別引数のメソッドを作ること。もしくはそのメソッド。
メソッドは引数さえ異なれば同じクラスの中に同名のメソッドをいくつでも作ることができる。これらのメソッドは「オーバーロードされたメソッド」と呼ばれる。
オーバーロードすることで、呼び出す側は「渡す型」を変えるだけで自動的に適切なメソッドが呼ばれるため、便利な機能のひとつと言える。
ただし、それ故に「どのメソッドが呼ばれるのかわかりにくい」という問題点もある。逆に言うと「どのメソッドが呼ばれてもよい」よう、オーバーロードされたメソッドは、どれも似たような結果を返すことが求められる。
オーバーロードの例としてStringBufferクラスのappend()メソッドがある。このメソッドは多くのプリミティブ型とObjectクラスに対してオーバーロードされているが、結果はすべて「文字列化し連結する」ことである。このように、オーバーロードされたメソッドが共通の結果を返すのが理想である。
「オーバーライド」と名称が似ているが、全く異なるもののため注意すること。
メソッドは引数さえ異なれば同じクラスの中に同名のメソッドをいくつでも作ることができる。これらのメソッドは「オーバーロードされたメソッド」と呼ばれる。
オーバーロードすることで、呼び出す側は「渡す型」を変えるだけで自動的に適切なメソッドが呼ばれるため、便利な機能のひとつと言える。
ただし、それ故に「どのメソッドが呼ばれるのかわかりにくい」という問題点もある。逆に言うと「どのメソッドが呼ばれてもよい」よう、オーバーロードされたメソッドは、どれも似たような結果を返すことが求められる。
オーバーロードの例としてStringBufferクラスのappend()メソッドがある。このメソッドは多くのプリミティブ型とObjectクラスに対してオーバーロードされているが、結果はすべて「文字列化し連結する」ことである。このように、オーバーロードされたメソッドが共通の結果を返すのが理想である。
「オーバーライド」と名称が似ているが、全く異なるもののため注意すること。
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// J2SEのオーバーロードの例。
StringBuffer strbuf = new StringBuffer();
// append()メソッドはintやbooleanなどで
// オーバーロードしています。
strbuf.append( 100 );
strbuf.append( true );
System.out.println( strbuf.toString() );
// 100true
// 自分で作ったオーバーロードされたメソッドを
// 呼び出してみます。
Sample sample = new Sample();
sample.print( 200 );
// print( int ) : 200
sample.print( "かきくけこ" );
// print( String ) : かきくけこ
}
/**
* int型が渡された場合に呼ばれます。
*/
private void print( int i )
{
System.out.println( "print( int ) : " + i );
}
/**
* String型が渡された場合に呼ばれます。
*/
private void print( String string )
{
System.out.println( "print( String ) : " + string );
}
}
public class Sample
{
public static void main( String[] args )
{
// J2SEのオーバーロードの例。
StringBuffer strbuf = new StringBuffer();
// append()メソッドはintやbooleanなどで
// オーバーロードしています。
strbuf.append( 100 );
strbuf.append( true );
System.out.println( strbuf.toString() );
// 100true
// 自分で作ったオーバーロードされたメソッドを
// 呼び出してみます。
Sample sample = new Sample();
sample.print( 200 );
// print( int ) : 200
sample.print( "かきくけこ" );
// print( String ) : かきくけこ
}
/**
* int型が渡された場合に呼ばれます。
*/
private void print( int i )
{
System.out.println( "print( int ) : " + i );
}
/**
* String型が渡された場合に呼ばれます。
*/
private void print( String string )
{
System.out.println( "print( String ) : " + string );
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // J2SEのオーバーロードの例。 StringBuffer strbuf = new StringBuffer(); // append()メソッドはintやbooleanなどで // オーバーロードしています。 strbuf.append( 100 ); strbuf.append( true ); System.out.println( strbuf.toString() ); // 100true // 自分で作ったオーバーロードされたメソッドを // 呼び出してみます。 Sample sample = new Sample(); sample.print( 200 ); // print( int ) : 200 sample.print( "かきくけこ" ); // print( String ) : かきくけこ } /** * int型が渡された場合に呼ばれます。 */ private void print( int i ) { System.out.println( "print( int ) : " + i ); } /** * String型が渡された場合に呼ばれます。 */ private void print( String string ) { System.out.println( "print( String ) : " + string ); } }