スーパーキーワード:
スーパーの主な機能:
これは、同時に1行超を提示しません。
この方法は、引数なしの最初の行に設定されたデフォルトのステートメントスーパー()コンストラクタを持っています。
民営化後は、デフォルトの表示に定義することはできません、
(default文のスーパーので、サブクラス空のリファレンス構成を強調するように、親)
限り、これは何のスーパーではないとして、行の最初。
スーパーコール:
スーパー:親クラスの代わりに現在のオブジェクトへの参照
親クラスのメンバ変数を呼び出すには、スーパー。メンバ変数
スーパー(...)は、親クラスのコンストラクタを呼び出し
スーパー。メンバーは、親クラスのメンバーのメソッドを呼び出します
// 定义人类、将学生和ワーカー共性抽取出来の クラス人{ プライベート文字列名; プライベート int型の年齢; 公共パーソン(文字列名、int型の年齢){ // スーパー(); この .nameの= 名前; この .age = 年齢; } パブリック文字列のgetName(){ 戻り名。 } 公共 ボイドのsetName(文字列名){ この .nameの= 名前。 } 公共 INT getAge(){ リターン年齢; } パブリック 無効 setAge(int型年齢){ この .age = 年齢; } }
//学生はPerson拡張する クラスの生徒を拡張する人{ // コンストラクタクラスの学生 学生(文字列名、int型の年齢){ // スーパー使用キーを単語初期化動作に対応する、親クラスのコンストラクタを呼び出して スーパー(名前、年齢); } 公共 ボイド研究(){ // Studnet独特の方法 のSystem.out.println(この .getName()+「生徒が学びます」); } }
労働者は、// 拡張したPerson クラスワーカーは、拡張人{ ワーカー(文字列名、int型の年齢を){ // 親キー、対応する初期化動作を呼び出すスーパーコンストラクタを使用して 、スーパー(名前、年齢); } パブリック 無効 {)(仕事を // ワーカー特有の方法 のSystem.out.println(この .getName()+「職場で従業員」); } }
//テスト パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ 学生STU =新しい新学生( "ボブ"、23); stu.study(); Wワーカー = 新しいワーカー( "小李"、45 ); w.work(); }
この()、独自の追加のコンストラクタを呼び出すことで、スーパー()は「親クラスの独自の継承されたコンストラクタを呼び出すことです
あなたは親クラスのデフォルトの引数なしのコンストラクタを呼び出したい場合は、それらのサブクラスのコンストラクタでそれを書いていないが、実際のプログラムは、常にそれを無視。
ドア二つのキーワードは、あなたの中で、両方のコンストラクタサブクラスにすることはできませんか?答えは確かではありません
原因:最初の行とこのスーパーが同時に存在することができない; JAVAコンストラクタは、このスーパーを使用しなければならない最初の行で指定されました