본문 바로가기

IT自主学習 (2023.05.23~)/Java(2023.05.23~)

プログラミング自主学習 20日目 this&super/継承とコンストラクタ/Polymorphism(ポリモーフィズム/多態性/多相性)

this&super

thisはインスタンス、superはスーパークラスのことだ。

Overridingした後、またスーパクラスのメソッドを使いたい場合は、継承したメソッドにsuperを付ける。

Cal3の値はCalと同様5であるが、実際は"Oh,yeah!"を出力した後からはcalのsumメソッドを呼び出している。

 

 

また、コードを読みやすくするため、Overloadingしたメッソドはthis.を使用してまとめることができる。

例えば、クラスCalのメソッドであるsum(int v1, int v2, int v3)はsum(int v1, int v2)よりOverloadingしたメッソドであり、ある意味では包含関係であるため、this.を使用し、まとめることができる。

以下がまとめた例である。

 

 

 


継承とコンストラクタ

 

スーパクラスにコンストラクタがあると仮定すれば、サブクラスにもコンストラクタが必要である。

 

 

その場合はサブクラスにはスーパークラスのコンストラクタが必修になる。

 


Interface

 

 

プログラミングは共同作業である。すべてのクラスを制作するのではなく、外注する場合も多いが、

その際に、コミュニケーションが通じないことで、このようなすれ違いが生じる可能性もある。

そのため、活用するのがInterfaceである。

 

このように、Interfaceのどおりコードを作成したい限り、コンパイルすらできない。

こういったコードを通してクラスを規定する互いの約束をInterfaceという。

 

 

interfaceのコードに合わせてOverridingする機能もIDEに備わっている。


Interfaceの形式

1)インターフェース名は主に形容詞で作成する

例>interface Calculable{} , interface Printable{}

 

2)一つのクラスには様々なインターフェースが具現できる。

class RealCal implements Calculable, Printable {}

 

3)インターフェースではクラスの変数とメッソドを定義することができる。

変数には必ず値が必要であり、メソッドは技能ではなく、形のみ定義できる。

要するに、メッソドの内容はクラスより規定する必要がある。

 

 


Polymorphism(ポリモーフィズム/多態性/多相性)

多態性を例えると一つのクラスが様々な形を持つことである。

 

インターフェースを持つクラスのインスタンスを作成する場合、データー型としてクラスだけでなく、

そのクラスのインターフェースに指定することもできる。

 

例>RealCal c = New RealCal(); ➡ Printable c = New Realcal();

 

これにより、クラス内で使用したい変数とメソッドを取捨選択ができる。

 

また、異なるクラスであっても、同じインターフェースを持っているクラスであれば、インスタンス化時に

をする際に互換性や柔軟性があるため、呼び出すことができる。以下がその例である。