連載
» 2008年06月17日 00時00分 公開

オーバーロードを習得するソースコードで学ぶ SJC-P 5.0 ドリル(10)(1/2 ページ)

本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。

[山本道子,有限会社 Ray]

 連載第10回で最終回を迎える今回は、オーバーロードに関する出題です。

オーバーロード

 1つのクラス内に、同じ名前のメソッドやコンストラクタを複数定義することができます。これをオーバーロードと呼びます。

 ただし、それぞれのメソッドが別物であることを判断するために、引数の並び、型、数が異なっていることが条件です。

【構文】メソッドのオーバーロード

void method(){ }

void method(int a) { }

void method(int a, int b) { }

void method(String s) { }


【構文】コンストラクタのオーバーロード

class Employee {

Employee() { }

Employee(int id) { }

Employee(int id, String name) { }


class Foo { 
  int   x;    int   y;
  // 引数なしの display() メソッド
  public void  display() {
    System.out.println("-- display()");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }
  // 引数が 2 つの display() メソッド
  public void display(int x, int y) {
    this.x = x;
    this.y = y;
    System.out.println("-- display(int x, int y)");
    System.out.println("x = " + x);
    System.out.println("y = " + y);
  }
  public void setData(int x, int y) {
    this.x = x; this.y = y;
  }
}
class Sample1 {
  public static void main(String args[]) {
    Foo obj = new Foo();
    obj.setData(10,20);
    // 引数なしの display() メソッドの呼び出し
    obj.display();        
    // int 型の引数を 2 つ取る display() メソッドの呼び出し
    obj.display(300,400);   
  }
}
サンプルコード1(Sample1.java)
C:\sample>java Sample1
-- display()
x = 10
y = 20
-- display(int x, int y)
x = 300
y = 400
C:\sample>
サンプルコード1の実行結果

演習問題

 以下の問題を考えてみてください。解答と解説は次のページにあります。

問題

 次のプログラムをコンパイルし、実行するとどうなりますか? 1つ選択してください。

 1. public class Test {
 2.   public void method() {}
 3.   public int method() { return 0;}
 4.   public double method(int a){ return 0.0; }
 5. }

A.実行時エラー

B.2行目にエラーがあるためコンパイルエラー

C.3行目にエラーがあるためコンパイルエラー

D.4行目にエラーがあるためコンパイルエラー

E.コンパイルは成功し、ほかのクラスからこれらのメソッドは問題なく呼び出しができる

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。