何継承されています
継承は重要なJavaで実装コードの重要な手段です。Javaはサポートのみ単一継承を、つまり、クラスが一つだけ持つことができます直接の親を。継承は、クラスとクラス間の関係である単純なポイントです。
なぜ使用の継承
コードの再利用性を高めるため
、コードの冗長性を削減
作成継承
サブクラスは親クラスを拡張します
拡張キーワード実装クラスを継承します
superキーワード
(1)、スーパーキーワードを使用して、超親オブジェクトに代わっ
(2)サブクラスと呼ばれ、コンストラクタは最初のものでなければならない
(3)親クラスがプライベートプロパティおよびメソッドとして定義され、アクセスすることができません
条件を継承したルールのコンストラクタを呼び出します
- サブクラスのコンストラクタを明示的に親クラスを呼び出して参照することにより、スーパーコンストラクタを持っていない、明示的な自分自身を呼び出して、他のデフォルトコンストラクタは、このことにより、引数なしで親クラスのコンストラクタを呼び出していません
- サブクラスのコンストラクタは、コンストラクタを明示的引数なしで親クラスのコンストラクタを行わず、スーパーによって、親クラス、それぞれの親クラスのコンストラクタを呼び出すあり参照
- サブクラスコンストラクタは、この他のコンストラクタによって明示的に自分自身を呼び出して、上記2つのルールが、対応するコンストラクタに適用します
プライベート文字列の品種; // 品種 公共の犬(文字列名、int型健康、int型の愛、文字列の品種){ スーパー(名前、健康、愛); // 表示最初の場所で構成された親クラスを呼び出し 、この .varietiesの=の品種を、 }
親クラスとサブクラスの関係
サブクラスは、親クラス(構築する変数法)のいずれかの非プライベートメンバーを継承することができます
サブクラスは常に、親よりも多くのメンバー持っている子>父親を
メソッドは、ルールを書き換えます
- 同じパラメータリスト
- 同じメソッド名
- 戻り値は、同じタイプまたはサブクラスであります
- アクセスは、親クラスよりも厳しいことはできません
- 親クラスの静的メソッドは、親クラスの非静的メソッドの非静的メソッドは、静的メソッドのサブクラスでオーバーライドすることはできませんサブクラスでオーバーライドすることはできません
- サブクラスに隠された:親クラスの静的メソッド(ないスーパーを使用して静的メソッド注)ので、サブクラスは、同じ名前の親クラスの静的メソッドを定義することができます
- プライベート親メソッドは、サブクラスによってオーバーライドすることはできません
- あなたは、スーパークラスのメソッドよりも多くの例外をスローすることはできません
メソッドは、メソッドのオーバーロード対上書きします
この方法は、原則として上書きされます
その方法を除く、他の全ての(戻り型、戻り値、パラメータ)を正確に
抽象抽象クラス
メソッド抽象クラスは、抽象クラス必見です
抽象クラスは、抽象メソッドを持っていないかもしれません
抽象クラスは、例えば、インスタンス化できない、ペンのペン=新しいペンは、();インスタンス化することはできません
抽象クラスのサブクラスは、共通のクラスであり、抽象クラス抽象クラスの一般的な方法は、達成するために
抽象クラスのサブクラスは抽象クラスであり、この時間は、抽象親クラスをサブクラスで実装することはできません
取得し、使用してパッケージを設定
取得:===>フィールドタイプの関数の戻り値の型の値を取得するフィールド値
セット:Typeフィールドは、関数のパラメータ===>フィールドの値に設定されています
// データ取得 パブリック文字列のgetName()は{ 返す名; } // データを追加 公共 ボイドのsetName(文字列名){ この .nameの= 名; }
Objectクラスのサブクラスは、多くの場合、メソッドをオーバーライド
コンストラクタ
ユーザーはデフォルトが消滅を用意している場合にパラメータなしでコンストラクタを記述することなく、クラスのデフォルトコンストラクタの存在下で存在します
コンストラクタは、型の戻り値ではありません
コンストラクタの実施時期:プロセスがインスタンス化されるクラスは、自動的にコンストラクタを呼び出します
メンバー変数の初期化が完了したクラスです。の役割
公共の人(){ } //これが存在しない場合はデフォルトコンストラクタが作成されますです
何多型であります
同じ参照異なるタイプの異なる動作例を実行します
エンティティとの継承関係を、さまざまな方法(メソッド本体)で撮影した同じ操作(関数名)を完了するために、異なるエンティティで発生します。
リヒターの置換原則(リスコフの置換原則)
位置で説明するために使用することができ、スーパークラス、サブクラスのオブジェクトに表示されます
(より良い親、親クラスがどこにでも現れる子類推ので、サブクラスを使用することができます)
3つの方法でリアリティ多型
- 親の型オブジェクトの実装サブクラス多型を受け取ります
- 親クラスの型パラメータの方法として、
- 親クラスのメソッドの型が値を返すように
意気消沈アップ
アップキャスト:サブクラスのオブジェクト--->親クラスが強いターンを変換する必要はありません(例外なく)
= PET PET 新しい新しい犬( "白"、50、89、 "アラスカ" ); pet.showInFo(); // アップキャストオートチェンジャー
ダウンキャスト:親タイプ--->サブクラスの型変換は強力なターンを必要とし、二つのタイプを比較するために使用instanceofは(ClassCastExceptionが)異常防ぎます
= PEN PET 新しい新ペンギン( "赤"、50、90、 "Q妹" ); IF(PEN instanceofのペンギン){ // instanceofの比較回避異常を持つ ペンギンポン=(ペンギン)PEN; //をキャストする必要が 鵬を.eat(); } 他{ System.out.printlnは( "あなたは正確ではありません入力されました" ); }
値型と参照型
値の種類:8つの基本データ型
参照データ型:オブジェクト
値の転送
スタック上のデータをコピーします。
値によって渡された参照型が変更されます
値渡された値の型が変更されません
Javaは転送のみ値をサポートしています