0
2

More than 3 years have passed since last update.

初心者から始めるJava、オーバーロード・コンストラクタ

Last updated at Posted at 2020-03-14

追記 2020/3/15
・多態性について、より抽象度の高い考え方であることをコメントで教えていただいたので、オーバーロードとの関係について修正。

はじめに

この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
間違えたものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。

環境

言語:Java11、JDK13.0.2
動作環境:Windows10

オーバーロード

クラスの中では、同じ名前のメソッドが同居しても構わないルールがある。
ひとつのメソッドの中で、扱う引数を無制限に増やしてもすべての引数を一度に宣言するのは難しいので、必要な機能に分けて用意した方が、クラスを使う側からしても楽になる。

Cat.java
getCatStatus(double weight,double height){
()
}
getCatStatus(int age,int number){
()
}
getCatStatus(String name,String voice){
()
}

このとき、getCatStatus()を使った場合の引数指定に応じて、同じ名前のメソッドから合致するものを選んで使ってもらえる。
この機能の事をオーバーロードという。
注意点として、同じ名前の各メソッドが持つ引数の型・個数が異なるようにする必要がある
これには、戻り値の型による違いは含まれてないため、修飾子が違うだけの同じ引数を必要とするメソッドは作れない

コンストラクタ

クラスを用意してメソッドを書く際、クラスのオブジェクトが生成された直後にクラスフィールドの初期値を定めることが出来る。

Cat.java
class Cat
{
  private double weight;
  private int age;

  public Cat()
  {
    weight = 1.0;
    age = 0;
  }
}

クラス名と全く同じ名前のメソッドを書くと、クラスを使ってnewしてオブジェクトが生成された際自動的に初期値を格納することが出来る。

終わりに

オーバーロードで扱った、同じ名前のメソッドではあるが引数に応じて別の働きをもたせることが出来る機能について。
関数の多重定義という仕組みであり、特に引数の型に応じて関数の振る舞いが変わる多相性のことをアドホック多相と呼ぶ。

メモ:アドホック多相は多態性(ポリモーフィズム:Polymorphism)のうちのひとつ

参考

出来るだけ自分で変数や式を書いてコンパイルしているので、完全に引用する場合はその旨記述する。

やさしいJava 第7版
Java SE11 Silver 問題集(通称黒本)

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2