(同じ利用者による、間の20版が非表示)
1行目: 1行目:
< [[Java基本文法]]
< [[Java基本文法]]


* クラスとは、サブルーティーン群を論理的にフォルダにまとめて整合整理するための仕組み
* クラスとは、サブルーティーン群を論理的にフォルダにまとめて整理整合するための仕組み
* フォルダ1 (SuperClass) -> フォルダ2 (SuperClass) -> SubClassファイル群と階層整理ができる
* フォルダ1 (SuperClass) -> フォルダ2 (SuperClass) -> SubClassファイル群と階層整理ができる
* さらに、Interfaceクラスを使ってそのクラスの仕様や概要を明示し、しかもコントロールできる
* 階層整理をすると各クラス群の役割状況、ポリモやメソッド等の使い回し状況などがtreeで俯瞰できる
* 階層整理をすると各クラス群の役割状況、ポリモやメソッド等の使い回し状況などがtree俯瞰できる
* <strong>階層整理をしていれば</strong>「継承」や「多態性」などの概念が「見える」ので、難なく理解できる
* <strong>階層整理をしていれば</strong>「継承」や「多態性」などの概念が「見える」ので、難なく理解できる


==クラスヒエラルキー==
==クラスヒエラルキー==
===1. インターフェース===
===1. インターフェース===
* メソッドの継承をサブクラス群に対して強制できるので厳格な仕様を定義できる
* フィールドには自動的に「public static final」が付き定数になる
* フィールドには自動的に「public static final」が付き定数になる
* メソッドには自動的に「public abstract」が付く
* メソッドには自動的に「public abstract」が付く
14行目: 14行目:


===2. スーパークラス===
===2. スーパークラス===
* 「abstract」が付いたクラスはnewできなくなり、使い回し専用クラスになる
* 「final」が付いたクラスはextendsできなくなり、完成品クラスとなる
* 「final」が付いたメソッドはサブクラスでオーバーライドできない
* implementsでインターフェースを使い回せる
* implementsでインターフェースを使い回せる
* 同名メソッドで、インターフェースのデフォルトメソッドをオーバーライドできる
* 同名メソッドで、インターフェースのデフォルトメソッドをオーバーライドできる
* 「abstract」が付いたクラスはnewできなくなり、使い回し専用クラスになる
* 「final」が付いたクラスはextendsできなくなり、完成品クラスとなる
* 「final」が付いたメソッドはサブでオーバーライドできない


===3. サブクラス===
===3. サブクラス===
26行目: 26行目:


==その他の機能==
==その他の機能==
* フォルダ階下の全てのクラス群に対して処理を一括適用できる。ポリモーフィズム
* フィールドは <code>public static final</code> を付けると不変になる。定数フィールド
* フォルダ階下の全てのクラス群を指定してメソッドを一括実行できる。ポリモーフィズム
* シグニチャが違えば1つのクラスに同名メソッドを幾つでも定義できる。オーバーロード
* シグニチャが違えば1つのクラスに同名メソッドを幾つでも定義できる。オーバーロード
* メソッドにクラス名を使えばnew直後に自動的に実行されるメソッドを定義できる。コンストラクタ
* メソッドにクラス名を使えばnew直後に自動的に実行されるメソッドを定義できる。コンストラクタ
===コンストラクタのオーバーロード===
Hero (String name) {
    this.hp = 100;
    this.name = name;
}
Hero() {
    this("TEST");
}

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");
}