オブジェクト指向:継承

キーワードを拡張することで、実装の継承クラスをサブクラスと呼ばれているJavaが達成され、継承されたクラスが親クラスまたは基本クラス、スーパークラスとなります。

親クラスのサブカテゴリ拡大は、サブクラスでは、特別な親クラスです。Javaのサブクラスは、親クラスのコンストラクタを取得することはできません

クラスFatherClass {
     公共 fatherMethod(){ 
        System.out.printlnは( "fatherMethod" ); 
    } 
} 
パブリック クラス ExtendsClass1は延びFatherClass {
     公共 静的 ボイドメイン(文字列[]引数){ 
        ExtendsClass1 EC = 新しいExtendsClass1を();
        // 获得父类的方法
        ec.fatherMethod(); 
    } 
}

 クラスは親クラスを指定しない場合、デフォルトのクラスのオブジェクトは、オブジェクトは、直接の親のすべてのクラスの親クラスは、ある、または間接の親クラスです。

この方法は、親クラスをオーバーライド

クラスFatherClass {
     公共 ボイドfatherMethod(){ 
        System.out.printlnは( "fatherMethod" ); 
    } 
} 
パブリック クラス ExtendsClass1 延びFatherClass { 
    
    公共 ボイドfatherMethod(){ 
        System.out.printlnは(「親クラスのメソッドをオーバーライドし、sonMethodを" ); 
    } 
    公共の 静的な 無効メイン(文字列[]引数){ 
        ExtendsClass1 EC = 新しい新しいExtendsClass1は();
         // このサブクラスがスーパークラスのメソッド、サブクラス実行方法オーバーライド
        ec.fatherMethodを(); 
    } 
}

 現象サブクラスは、メソッド、オーバーライド、とも呼ばれるオーバーライドを上書き呼ばれる親クラスのメソッドと同じ名前が含まれています。

二つの小さなタイプサブクラス方法値の戻り値型がより小さいまたは親クラスメソッド、サブクラスのメソッドに等しい戻り、同じメソッドの名前、同じパラメータリストは2つで、二つの小さな両者の同じ原理に従うオーバーライドメソッド親クラスによってスローされた例外宣言よりも小さいか等しいです。親クラスよりもサブクラスのメソッドに素晴らしい、偉大なアクセス。カバーコート法または方法は、方法の例であり、いずれかに基づいてされる方法は、クラスの方法ではないインスタンスメソッドです。

サブクラスはスーパークラスのメソッドではなく、親クラスのサブクラスのメソッドをオーバーライドするとき。親クラスオーバーライドされたメソッドは、superキーワードまたはクラス名を使用して、親クラスを呼び出すことができます。

クラスFatherClass {
     公共 ボイドfatherMethod(){ 
        System.out.printlnは( "fatherMethod" ); 
    } 
} 
パブリック クラス ExtendsClass1 延びFatherClass { 
    
    公共 ボイドfatherMethod(){
         // するSystem.out.println(「親のメソッドをオーバーライドします、sonMethod「);
         // スーパー親クラスのメソッドを呼び出す
        スーパー; .fatherMethod()
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){ 
        ExtendsClass1 EC = 新しい新しいExtendsClass1(); 
        ec.fatherMethod();  
    }
}

 Javaは、それはインスタンス変数を継承するか、親クラスから派生したメソッドを呼び出すためにオブジェクトを定義するために提供スーパーの鍵です。これは修正静的メソッドで表示することはできませんスーパー、静的メソッドで発生することはできません。クラスの静的メソッドを変更しました。

クラスFatherClass {
     静的 int型 = 18 Aであり; 
} 
パブリック クラス ExtendsClass2は延びFatherClass {
     静的 INT。A = 19 ;
     公共 静的 ボイド(文字列[]引数)は、メイン{
         // この値サブクラスで 
        のSystem.out.println(「サブ+」のクラス値; A)
         // スーパー変更することができない静的メソッド 
        のSystem.out.println(スーパーII.A); 
    } 
}
クラスFatherClass {
     int型、A = 18であり;
     公共 ボイドメソッド(){ 
        System.out.printlnは( "親値" + A); 
    } 
} 
パブリック クラス ExtendsClass2 延びFatherClass {
     int型、A = 19。;
     公共 ボイドメソッド(){ 
        System.out.println(「値のサブクラス」+ A)
        のSystem.out.println( +「サブクラスは親クラスのメソッドは、親クラスの出力値オーバーライド」スーパーII.Aを); 
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){ 
        ExtendsClass2 EC =新しいExtendsClass2(); 
        ec.method(); 
    } 
}
クラスFatherClass {
     int型、A = 18であり;
     公共 ボイドメソッド(){ 
        System.out.printlnは( "親値" + A); 
    } 
} 
パブリック クラス ExtendsClass2 延びFatherClass {
     int型、A = 19。;
     公共 ボイドメソッド(){
         // サブクラスのメソッド呼び出しの親クラス
        スーパー; .method()
    } 
    パブリック 静的 ボイドメイン(文字列[]引数){ 
        ExtendsClass2 EC = 新しい新しいExtendsClass2(); 
        ec.method(); 
    }
}

 スーパークラスのプライベートメソッドと変数のサブクラスは、あなたがアクセスすることはできません、継承することはできません。同じサブクラスはメソッドと変数、および親クラスを定義する場合、それは同じではありません。

クラスFatherClass {
     プライベート int型 A = 100 ;
     プライベート ボイド方法(){ 
        Sytem.out.printlnは( "親プライベートメソッド" ); 
    } 
} 
パブリック クラスExtendsClass3 {
     int型 A = 200であり公共 ボイドメソッド(){ 
        のSystem.out。 println(「親クラスから継承しないサブクラスのメソッド、」
    } 
}

サブクラスのコンストラクタは、親クラスを呼び出します

 コードの実行可能なサブクラスの最初の行は重要このコンストラクタを使用して、第一のサブ行スーパークラスのコンストラクタを明示的にシステムが着呼スーパー例に係るリストコンストラクタに対応する親クラスを呼び出す、親クラスのコンストラクタを呼び出す行います呼び出し、このクラスのコンストラクタのオーバーロード、システムがこの着信引数リストに基づいて、このクラスの別のコンストラクタを呼び出しますが、このクラスのコンストラクタの別の実装親クラスのコンストラクタを呼び出します。サブ実行可能なクラスのコンストラクタは、どちらもスーパーもこのコールを呼び出し、システムは、サブクラスのコンストラクタを実行する前に、親クラスの暗黙のコンストラクタのパラメータを呼び出すことはありません。

 

おすすめ

転載: www.cnblogs.com/zaijie/p/11032152.html