はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。
環境
言語:Java11、JDK13.0.2
動作環境:Windows10
オーバーロード
クラスの中では、同じ名前のメソッドが同居しても構わないルールがある。
ひとつのメソッドの中で、扱う引数を無制限に増やしてもすべての引数を一度に宣言するのは難しいので、必要な機能に分けて用意した方が、クラスを使う側からしても楽になる。
Cat.java
getCatStatus(doubleweight,doubleheight){(略)}getCatStatus(intage,intnumber){(略)}getCatStatus(Stringname,Stringvoice){(略)}
このとき、getCatStatus()
を使った場合の引数指定に応じて、同じ名前のメソッドから合致するものを選んで使ってもらえる。
この機能の事をオーバーロードという。
注意点として、同じ名前の各メソッドが持つ引数の型・個数が異なるようにする必要がある。
これには、戻り値の型による違いは含まれてないため、修飾子が違うだけの同じ引数を必要とするメソッドは作れない。
コンストラクタ
クラスを用意してメソッドを書く際、クラスのオブジェクトが生成された直後にクラスフィールドの初期値を定めることが出来る。
Cat.java
classCat{privatedoubleweight;privateintage;publicCat(){weight=1.0;age=0;}}
クラス名と全く同じ名前のメソッドを書くと、クラスを使ってnew
してオブジェクトが生成された際自動的に初期値を格納することが出来る。
終わりに
オーバーロードで扱った、同じ名前のメソッドではあるが引数に応じて別の働きをもたせることが出来る機能を多態性(ポリモーフィズム:Polymorphism)という。
参考
出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。