オーバライドとオーバーロード
⑴オーバーライド
サブクラスでスーパクラスに定義されたメソッドを「再定義」すること。
○スーパークラスの定義に加えて、サブクラスに新しい定義を追加(再定義)すること。
×スーパクラスの定義を上書き(overwrite)すること。
ルールは以下の3つのみ
・メソッドのシグニチャ(名、型、数、順番)は同じでなければいけない。
・戻り値の型は同じか、そのサブクラス型でなければいけない。
・アクセス修飾子は同じか、より緩いものでなければいけない。
※上書きなのではなく、JVMがインスタンス生成時に作成する「メソッド・ディスパッチ・テーブル」という仕組みによって、サブクラスでオーバーライドしたメソッドを優先してるってだけなのよ。
執筆中
ポリモーフィズム呼び出し
以下の場合、コンパイルエラーになるって分かります?
------------------------
//Main.class
public class Main{
public static void main(String[] args){
A a = new B();
a.sample();
}
}
------------------------
//A.class(クラスA)
public class A{
public void hello(){
//any code
}
}
//B.class(クラスAを継承するクラスB)
public class B extends A{
public void sample(){
//any code
}
}
------------------------
フィールドとメソッドの呼び出しは変数で定義された型のものしか使えない。
returnとexit
【return】
①処理の終了
②例外処理でfinallyブロック内の処理を実行する
-----------------
return;
//この行で処理を終了し、呼び出し元に処理を戻す。
-----------------
③戻り値
呼び出し先のメソッドが、呼び出し元に処理を戻す際、戻り値を返すか返さないかを決めることができる。
・戻り値を返さない場合
メソッド定義の戻り値の型に「void」、処理内で「return;」
・戻り値を返す場合
メソッド定義の戻り値の型に「void以外のデータ型」、処理内で「return [データ型に合致する変数や値];」
https://www.sejuku.net/blog/22842
【exit】
①プログラムの終了
②例外処理でfinallyブロック内の処理を実行しない
-----------------
System.exit()
//この行でプログラムを終了する。
-----------------
③終了コード
正常終了 :exitメソッドの引数に0を指定
正常終了以外:exitメソッドの引数に0以外を指定
データ
データとは値、情報のこと。
(1)型(2)構造(3)形式(4)表し方(5)保持場所で考える。
(1)型
・種類・扱い方のこと(※1)
・プリミティブ型(基本型)と参照型に分けられる。(※2)
(2)構造
・配列、リスト、木構造(※3)
(3)形式
・フォーマットのこと。
・ファイル形式の場合、拡張子で判断する。(.txt、.csv、.html、.css、.js、.jsp、.java、.xml、.py…etc)
(4)表し方
・変数、定数、リテラル、オブジェクト
(5)保持場所
・画面、メモリ、ファイル、DB
(※1)ポリモーフィズムに則ると、厳密には種類と扱い方は異なる概念。例えば、種類は数値の3だが、扱い方を整数の3とするか、浮動小数点数の3.0とするかで異なる。
(※2)プリミティブ型(基本型)と参照型
https://jioatips.hatenablog.com/entry/2018/09/24/202206
(※3)Javaを使うなら必ず覚えておきたいデータ構造 - 配列・リスト・マップ
http://d.hatena.ne.jp/nattou_curry_2/touch/20090726/1248600833