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();
これにより、クラス内で使用したい変数とメソッドを取捨選択ができる。
また、異なるクラスであっても、同じインターフェースを持っているクラスであれば、インスタンス化時に
をする際に互換性や柔軟性があるため、呼び出すことができる。以下がその例である。
'IT自主学習 (2023.05.23~) > Java(2023.05.23~)' 카테고리의 다른 글
プログラミング自主学習 22日目 1日12コミット (0) | 2023.06.17 |
---|---|
プログラミング自主学習 21日目 例外(Exception)/例外の処理/例外の優先順位/例外とデバッガ/finally&resource/try with resource (0) | 2023.06.16 |
プログラミング自主学習 19日目 コンストラクタ・this /Class化/Instance化/継承 (0) | 2023.06.14 |
プログラミング自主学習 18日目 静的クラス・動的クラス/フィールドとメソッド/Class/Instance/Static (0) | 2023.06.13 |
プログラミング自主学習 17日目 メソッドの出力/メソッドの活用/アクセス修飾子 (0) | 2023.06.12 |