本連載は、サン・マイクロシステムズ認定のJava資格Sun Certified Programmer for Java 2 Platform 5.0(SJC-P5.0)に対応しています。最新の出題傾向に基づいて、ソースコードの問題を中心に毎回模擬問題を1問出題します。ソースコードに慣れながら、SJC-P合格を目指して頑張りましょう。
連載第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); } }
C:\sample>java Sample1 -- display() x = 10 y = 20 -- display(int x, int y) x = 300 y = 400 C:\sample>
以下の問題を考えてみてください。解答と解説は次のページにあります。
問題
次のプログラムをコンパイルし、実行するとどうなりますか? 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.コンパイルは成功し、ほかのクラスからこれらのメソッドは問題なく呼び出しができる
Copyright © ITmedia, Inc. All Rights Reserved.