public class Operator { public boolean Plus(boolean A,boolean B) { return (A || B); } public int Plus(int A,int B) { return A+B; } public double Plus(double A,double B) { return A+B; } public String Plus(String A,String B) { return A+B; } public static void main(String args[]) { Operator a = new Operator(); System.out.println("true+false="+ (a.Plus(true,false))); System.out.println("1+2="+(a.Plus(1,2))); System.out.println("1.2+2.3="+ (a.Plus(1.2,2.3))); System.out.println("\"I am \"+\"a student\"="+ (a.Plus("I am ","a student"))); } }このプログラムを実行すると,以下のようになる.
true+false=true 1+2=3 1.2+2.3=3.5 "I am "+"a student"=I am a studentクラス Operator の中にはメソッド Plus が複数定義されている ことがわかる.型 boolean, int, double, Sring に対して Plus が定義されている.メソッド main では, メソッドを全て同じように a.Plus と呼出しているが, 引数の型に応じて呼出されるメソッドが異なっていることがわかる.
メソッド名は,演算子と捕らえることもできる.上の例の Plus がその 例である.一般に演算子は,型に左右されず複数の型に対して有効なことが多 いので,「常識」により近いという意味でも演算子を多重定義するとわか りやすい.Java ではできないが,C++ では「演算子の多重定義」が 提供されている.