1、継承の定義:
物事説明し、いくつかの重複したクラスのプロパティとメソッドがありますが、我々は使用することができます継承されたメソッドを設計します。
図2は、クラスAがBクラスの継承を拡張使用して実装しました。
サブクラス、親、B
3、サブクラスは親クラスを継承し、サブクラスが取得のみ親-アフリカ私有財産を、あなたが継承させたい場合は提供している共通セットを/メソッドを取得します。
この方法はまた、公共することができ、プライベートメソッドは継承できません。
図4は、相続によるサブクラスに加えて、親クラスの構造を得る、また、あなたは、独自のコンポーネントを定義することができます。
5、継承のJavaはサポート単一継承を、逆に、親は複数の子クラスを持つことができ、クラスは、親クラスから継承することができます。
方法は、書き換え:
サブクラスで継承は、親クラスがあります:1、ことを提供
2は、サブクラスは親クラスのサブクラスが適用されない場合は、サブクラスが親クラスのメソッドをオーバーライドすることができ、将来的には親クラスを継承しています
3、書き換えルール:
1)請求項サブクラスメソッドの戻り値の型の名前(パラメータリスト)「と親クラスのメソッドのメソッドは同じです。
2)サブクラス改質改質方法は、以下の親クラスのメソッドよりも。
3)親クラスのスロー例外場合は、異常トス例外サブクラスは親クラスを超えることはできません。
静的または非静的が同じであるとして4)メソッドのサブクラスとスーパークラスが同じでなければなりません。
superキーワード:
superキーワードを変更するために使用することができますプロパティ、メソッド、コンストラクタを。
サブクラスと親クラス1、同じ名前のプロパティがあってもよいを通じてスーパー。このプロパティは、 明示的に呼び出し属性は、親クラスで宣言されました。
コールと同じ名前のプロパティのサブクラスによって これを。このプロパティ
で親クラスのサブクラスオーバーライド、2、明示的に呼び出し親クラスにメソッドの場合、サブクラスがスーパーを使用して書き換えられます。方法。
注:のためにプロパティまたはメソッドと同じ名前ではありません ....、または超超財産法、この方法は、このまたはプロパティを行います。
3、スーパーコンストラクタ使って、サブクラスによって変更され、明示的に親クラスのコンストラクタは、指定されたコールするスーパー(パラメータリスト)。
1)コンストラクタ内、スーパー(パラメータリスト)最初の行の中で宣言されなければなりません。
2)コンストラクタ、スーパー(パラメータリスト)、またはこの(パラメータリスト)内にのみ表示されます。
3)内部構造では、明示的に)(スーパーパラメータリストを呼び出していない、またはのいずれかのこの(パラメータリスト)親クラスのコンストラクタを呼び出し、空のパラメータデフォルト
コードシェア:
Personクラス{公共の 保護された文字列名= "oooXXX"; 保護された文字列セックス、 プライベート年齢はint; int型ID = 142; //アイデンティティ 公共者(){ //スーパー(); //行が、デフォルトでは自動的になりますコール のSystem.out.println(「これは人、引数なしのコンストラクタです!」); } 公共人(文字列セックス){ この(); this.sex =セックス; のSystem.out.println(「これは人でありますそこ引数コンストラクタ「); } 公共ボイドのsetName(文字列名){ this.name =名; } 公共ボイドsetSex(文字列セックス){ this.sexセックス=; } 公共ボイドsetAge(INT年齢){ this.age =年齢; } パブリック文字列のgetName(){ 戻り名。 } パブリック文字列getSex(){ 戻り性別; } 公共INT getAge(){ 戻り年齢; } 公共ボイドは(食べる){ するSystem.out.println( "吃饭喽!!!")。 } プライベート無効徒歩(){ System.out.printlnは( "走起来!!!"); } 公共ボイド睡眠(){ System.out.printlnは( "人在睡觉!!!")。 } }
パブリッククラス学生パーソン{拡張 オーバーライド//メソッドを、被覆する方法 公共のボイドは、EAT(){ System.out.printlnは(「学生???今食べている」); } //このメソッドは、書き換えされていません何の散歩サブクラスの継承がないので親クラス()メソッド ます。public void徒歩(){ System.out.printlnは(「歩行???学生がいます。」); } }
労働者は、拡張したPersonクラス{公共の int型のID = 101;労働者の//数は 公共労働者(){ //スーパー(); スーパー(「女の子」); System.out.printlnはは(「これは引数のコンストラクタの労働者ではありません」 ); } 公共ボイドショー(){ System.out.printlnは(this.id) のSystem.out.println(super.id) のSystem.out.println(super.name) のSystem.out.println(本。名前) のSystem.out.println(this.sex) のSystem.out.println(super.sex); } //オーバーライドメソッド 公共ボイド(EAT){ super.eat(); //親クラスを呼び出しています食べ書き換え()メソッド のSystem.out.println( "労働者のそれを食べる!!!"); super.sleep(); System.out.println( "-------"); this.sleep(); } }
{クラスJiChengTest公共 のpublic static無効メイン(文字列[] args){ 学生学生新しい新しいSTU =(); stu.eat(); 継承することができない親クラスの//stu.walk();//プライベートメソッドサブクラス // stu.name; //サブクラスは親クラスのプライベート変数を継承することはできません stu.setName(「OPPOを」); System.out.printlnは(stu.getName()); //子クラスのアクセスプライベート変数に間接的に一般的な方法による、 stu.walk(); ワーカー新しい新しいワーカー=ワーカー(); worker.eat(); worker.setSex( "M") するSystem.out.println( "ワーカー::" worker.getSex +()+ "" worker.getName +()+ "" + worker.getAge()); //男性労働者:: 0ヌル 労働者W2 =新しい新しいワーカー(); w2.show(); w2.eat(); System.out.println(Person.class.getSuperclass()のgetName()); //Java.lang.Object----は、本明細書中に人のデフォルトの親クラス・オブジェクト記述 } }
結果:
これは、人、引数なしのコンストラクタです!!
私たちは???学生今食べている
OPPO
学生は???歩行している
。これは、人、引数なしのコンストラクタです!!
これは、引数がコンストラクタ人で
、これは引数なしのコンストラクタの労働者が
自分自身を食べます!!!
労働者はそれを食べます!!!
人々が眠っています!!!
-------
男の睡眠!!!
労働者::男性oooXXX 0
これは人、引数なしのコンストラクタです!!
これは人である引数は、コンストラクタされ
、これは引数なしのコンストラクタの労働者である
101人の
142
oooXXX
oooXXXの
女の子の
女の子は
自分自身を食べます!!!
労働者はそれを食べます!!!
人々が眠っています!!!
-------
男の睡眠!!!
java.lang.Object上位