2014年01月18日
JavaEEの前に復習をしてみる その10 オーバーロード
オーバーロードと聞くと、オーバーワークを思い浮かべてしまいます。
そんなのは、私だけ。。。
昨日、メソッドを実行する際に、値を直接もたせて処理させる。
なんてことをさせましたが、Javaにはオーバーロードという考え方がありまして、
もたせる値の型が違えば、同一の名前のメソッドを複数立てても構わないというルールがありました。
え?どういうこと?
薬剤師というクラスがあって、compaundというメソッドを3つ作ります。
通常、同じ名前のメソッドが3つあると、 compaund(); と実行させても、
おい、どのcompaundだよ!どれでもいいのか?いや、そんなことはできない!!
とエラーを返されます。
ですが、下記のプログラムのように、メソッドが持つ引数の中身が違えば、
同じ名前でも、一致する引数のものを動かせばいいと判断できるので、同一でも可能なのです。
package test;
public class Pharmacist {
public static void main (String [] args){
compound( "薬草");
compound( "薬草",3);
compound( "薬草", "毒消草" );
}
public static void compound(String item1){
System. out .println(item1+"を手に取って眺めた" );
}
public static void compound(String item1, int num1){
System. out .println(item1+"を" +num1+"個重ねてすり潰した" );
}
public static void compound(String item1,String item2){
System. out .println(item1+"と" +item2+"を調合して、新たなアイテムを作った" );
}
}
結果
薬草を手に取って眺めた
薬草を3個重ねてすり潰した
薬草と毒消草を調合して、新たなアイテムを作った
これを応用すると、同じメソッドへの命令でも、もたされた値によって動きを変えるということができるようになります。
薬剤師さんも、持っているアイテムや数量によって、処理する結果を変えることができるんですね。
オーバーロードとか、オーバーライドとか、このあたりから、じゃんじゃん出てきますね。
まだまだ入門の入門という感じです。
そんなのは、私だけ。。。
昨日、メソッドを実行する際に、値を直接もたせて処理させる。
なんてことをさせましたが、Javaにはオーバーロードという考え方がありまして、
もたせる値の型が違えば、同一の名前のメソッドを複数立てても構わないというルールがありました。
え?どういうこと?
薬剤師というクラスがあって、compaundというメソッドを3つ作ります。
通常、同じ名前のメソッドが3つあると、 compaund(); と実行させても、
おい、どのcompaundだよ!どれでもいいのか?いや、そんなことはできない!!
とエラーを返されます。
ですが、下記のプログラムのように、メソッドが持つ引数の中身が違えば、
同じ名前でも、一致する引数のものを動かせばいいと判断できるので、同一でも可能なのです。
package test;
public class Pharmacist {
public static void main (String [] args){
compound( "薬草");
compound( "薬草",3);
compound( "薬草", "毒消草" );
}
public static void compound(String item1){
System. out .println(item1+"を手に取って眺めた" );
}
public static void compound(String item1, int num1){
System. out .println(item1+"を" +num1+"個重ねてすり潰した" );
}
public static void compound(String item1,String item2){
System. out .println(item1+"と" +item2+"を調合して、新たなアイテムを作った" );
}
}
結果
薬草を手に取って眺めた
薬草を3個重ねてすり潰した
薬草と毒消草を調合して、新たなアイテムを作った
これを応用すると、同じメソッドへの命令でも、もたされた値によって動きを変えるということができるようになります。
薬剤師さんも、持っているアイテムや数量によって、処理する結果を変えることができるんですね。
オーバーロードとか、オーバーライドとか、このあたりから、じゃんじゃん出てきますね。
まだまだ入門の入門という感じです。
【Javaの最新記事】
この記事へのコメント
https://www.ringeraja.hr/forum/compra_Codeine_%25_precios_Codeine/m_974694/tm.htm
https://www.ringeraja.hr/forum/Se_vende_Ativan_:_comprar_Ativan_0_5mg_online/m_979992/tm.htm
https://www.ringeraja.hr/forum/Kjøp_Modafinil_%24_Diazemuls_Til_salgs_Oslo/m_963162/tm.htm
https://www.ringeraja.hr/forum/Se_vende_Antihistamínicos_%5C_Antihistamínicos_venta_on_line/m_964747/tm.htm
こんばんはっ Habitat ですっ
昔の人間なんで、多重定義って言葉で置き換えて聞いてますww
たとえば、今回とは違う使い方で、
compound(String item1) では、
compound(String item1, New String.Empty) を呼び
compound(String item1, String item2) では、
compound(String item1, String item2, New String.Empty) を呼び
compound(String item1, String item2, String item3) で、本処理を仕込む
というのもありですね
New String.Empty はJava で使えるかわかりませんので、あしからずww
ちなみに、このNew String.Empty の代わりに固定値をいれれば、
引数していしなかった場合の、デフォルト値代わりに出来ます