オブジェクト指向について
オブジェクト指向の三大要素, ,
カプセル化
フィールドとメソッドを一体化してフィールドデータを保護するように設計すること継承
あるクラスの実装を土台にして、別のクラスを実装するための方法例)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を指定することで親クラスのものを参照できる
多態性
実装クラスがインタフェースで宣言されたメソッドを全て実装することインタフェースは複数のクラスに実装され、同じインタフェース型の変数には異なるクラスのオブジェクトを代入できるため、同じメソッドを呼び出しても、実行される処理はそのオブジェクトのクラスによって異なる
(多態性、まだやってないし覚えなくてもよさそう)