(同じ利用者による、間の3版が非表示) | |||
12行目: | 12行目: | ||
* メソッドには自動的に「public abstract」が付く | * メソッドには自動的に「public abstract」が付く | ||
* 「default」を付ければデフォルトメソッドを定義できる(Java8から) | * 「default」を付ければデフォルトメソッドを定義できる(Java8から) | ||
===2. スーパークラス=== | ===2. スーパークラス=== | ||
* 「abstract」が付いたクラスはnewできなくなり、使い回し専用クラスになる | * 「abstract」が付いたクラスはnewできなくなり、使い回し専用クラスになる | ||
* 「final」が付いたクラスはextendsできなくなり、完成品クラスとなる | * 「final」が付いたクラスはextendsできなくなり、完成品クラスとなる | ||
* 「final」が付いたメソッドはサブクラスでオーバーライドできない | * 「final」が付いたメソッドはサブクラスでオーバーライドできない | ||
* implementsでインターフェースを使い回せる | |||
* 同名メソッドで、インターフェースのデフォルトメソッドをオーバーライドできる | |||
===3. サブクラス=== | ===3. サブクラス=== |
2019年8月4日 (日) 09:28時点における最新版
< Java基本文法
- クラスとは、サブルーティーン群を論理的にフォルダにまとめて整理整合するための仕組み
- フォルダ1 (SuperClass) -> フォルダ2 (SuperClass) -> SubClassファイル群と階層整理ができる
- 階層整理をすると各クラス群の役割状況、ポリモやメソッド等の使い回し状況などがtreeで俯瞰できる
- 階層整理をしていれば「継承」や「多態性」などの概念が「見える」ので、難なく理解できる
クラスヒエラルキー
1. インターフェース
- メソッドの継承をサブクラス群に対して強制できるので厳格な仕様を定義できる
- フィールドには自動的に「public static final」が付き定数になる
- メソッドには自動的に「public abstract」が付く
- 「default」を付ければデフォルトメソッドを定義できる(Java8から)
2. スーパークラス
- 「abstract」が付いたクラスはnewできなくなり、使い回し専用クラスになる
- 「final」が付いたクラスはextendsできなくなり、完成品クラスとなる
- 「final」が付いたメソッドはサブクラスでオーバーライドできない
- implementsでインターフェースを使い回せる
- 同名メソッドで、インターフェースのデフォルトメソッドをオーバーライドできる
3. サブクラス
- extendsでスーパークラスを使い回せる
- 同名メソッドで、スーパークラスのメソッドをオーバーライドできる
- オーバーライドしていても「super」でスーパークラスのメソッドにアクセスできる
その他の機能
- フィールドは
public static final
を付けると不変になる。定数フィールド - フォルダ階下の全てのクラス群を指定してメソッドを一括実行できる。ポリモーフィズム
- シグニチャが違えば1つのクラスに同名メソッドを幾つでも定義できる。オーバーロード
- メソッドにクラス名を使えばnew直後に自動的に実行されるメソッドを定義できる。コンストラクタ
コンストラクタのオーバーロード
Hero (String name) { this.hp = 100; this.name = name; } Hero() { this("TEST"); }