オブジェクト指向(II)
クラス間の関係
-
別のメソッドのパラメータとしてクラスには、依存関係の2つのクラスを呼びました。(使用-A)
-
組成物のこの2つのクラス間の関係と呼ばれる別のクラスのプロパティとしてクラス。(HAS-A)
-
この方法は、2つのクラス間の親子関係は(ある-A)であると呼ばれる、別のクラスからすべてのクラス継承のプロパティです
継承/拡張
フォーマット:親クラスのサブクラスが伸びる(基底クラス、スーパークラス)
連続してA.アクセス修飾子
同じパッケージ
サブクラスはprivate修飾子ができ、親クラスへの直接アクセスに加えて、他のプロパティやメソッド
異なるパッケージ
-
サブクラスのオブジェクトは、アクセスのみ国民は変更することができます
-
サブカテゴリーの方法は、保護された修正方法の内部プロパティにアクセスすることができますが、デフォルトのプロパティのメソッドにアクセスすることはできません
クラス親は複数の子を持つことができますが、親はアクセスできない子土類元素であります
サブクラスで一つだけの親クラス、サブクラスは親クラスの要素にアクセスすることができます
II。コンストラクタ承継
-
サブクラスが作成されると、パラメータなしで親クラスのデフォルトコンストラクタを呼び出します
親がパラメータなしでクラスのコンストラクタでない場合は、サブクラスのクラス名に文句を言うだろう
ソリューション
-
親クラスの引数なしでコンストラクタを追加します。
-
スーパー/ウルトラ:スーパー最初の行で、この親クラスを参照して同様の継承が必要です
この方法はさらに、()super.xxxによって親クラスを呼び出すこと
-
III。変容
-
継承関係で
-
お互いへの参照があるはずです
-
サブタイプにスーパータイプは、それは親のサブタイプに含まれるべきです
// 親サブクラス動物犬 犬D = 新しい新しい犬(); 動物A = D; // 親の間で互いに以上のサブ参照、)新しい新しい= A犬Animol(に変更してもよい; 犬C = (犬); // サブタイプへの親型は、親のサブタイプに含まれるべきです
上記のコードでは、スタックの同じ領域に同じ時点で基準伝送、A、B、Cに送信されます。
Animol A = 新しいAnimol(); 犬D =(犬)
コードのエラー!ないコンパイル時エラー、実行時にエラー
四.Object
すべてのクラスのルートクラス
オブジェクトメソッド:
.toString()
System.out.println()デフォルトのメソッドを呼び出します
.equals()
オブジェクトのメソッドがアドレスを比較することです等しいことは同じです
我々はequalsメソッドをオーバーライドする必要がある場合は文字列を参照することができます
.hashCoad()
オブジェクトのハッシュ値を取得します。
抽象クラス
キーワード:
フォーマット:
パブリック 抽象 クラス类名{}
抽象クラスアクション:
-
2. 3.継承された多型が実装されて実装されています
// A、クラスBは、抽象サブクラスインスタンス化 // 多型のメソッドによって呼び出しを A = 新たな新しい B();
特長:
-
あなただけの継承に、オブジェクト(のインスタンス)を作成し、そこコンストラクタできません
-
端として、抽象修飾法は、()の抽象メソッドです。
公共の 抽象 無効メソッド名();
-
特定の抽象クラスを圧送する方法
-
抽象メソッドは、プライベート修正を使用することはできません、またあなたは、静的を使用することができ、最終的に修正
-
抽象メソッドを実装し、白い三角形が右側に表示されます。
-
インターフェース
キーワード:インタフェース
特長:
-
すべての内部デフォルトの方法は、(ときパブリック抽象も省略)抽象メソッドに開示されており、
-
JDK 1.8の前に、インターフェイスは、抽象メソッドを持っています
-
すべての変数は内部の静的定数です/初期値を持っている必要があります
インターフェイスは、インターフェイスが多く、スルー「」スプリットまで拡張拡張します
「」分割により多くのクラスが実装するインタフェースを実装します