[プロ技] Javaと周辺知識

Koba_gochiusa 公式アカウント めもりんグリーン

今まで書いたこと、全てスカして悲しい気分です
とりあえずテキスト準拠で
ログインすると、チェック機能を利用できるようになります。

オブジェクト指向について

オブジェクト指向の三大要素
, ,

カプセル化

フィールドとメソッドを一体化してフィールドデータを保護するように設計すること

継承

あるクラスの実装を土台にして、別のクラスを実装するための方法
例)boxクラスを継承してlunchboxクラスを実装する時
class lunchbox extends box{
・・・・・・・・・
・・・・・・・・・
}
この場合、boxが親クラス、lunchboxが子クラスとなる

親クラスの参照について
superを使用して、子クラスから親クラスのフィールド変数、メソッドを参照することができる
オーバーライドされている場合でも、superを使用することでオーバーライドされる前のメソッドを呼び出すことができる
オーバーライドされていない場合、superを使用しなくても親クラスの要素を呼び出すことができるが、superを記述することで、明示的に親クラスの要素を参照することができる
例)boxクラスのclose()メソッドをlunchboxから呼び出す
class box{
public close(){
System.out.println("box closed");
}
}

class lunchbox extends box{
@Override
public close(){
System.out.println("lunchbox closed");
}

public methods(){
super.close();
this.close();
}
}
Main内でlunchboxをインスタンス化し、methods()を実行すると、
box closed
lunchbox closed
と出力される
このことから、superを指定した場合オーバーライドされる前の親クラスのメソッドが呼び出され、しなかった場合はオーバーライド後のメソッドが呼び出されるとわかる

これはメソッドだけでなく、フィールド変数も同じようにsuperを指定することで親クラスのものを参照できる

多態性

実装クラスがインタフェースで宣言されたメソッドを全て実装すること
インタフェースは複数のクラスに実装され、同じインタフェース型の変数には異なるクラスのオブジェクトを代入できるため、同じメソッドを呼び出しても、実行される処理はそのオブジェクトのクラスによって異なる
(多態性、まだやってないし覚えなくてもよさそう)