Javaの抽象クラスとポリモーフィズム

抽象的な概念

  同じ方法関数宣言が、身体機能の異なる方法。その後の時間は、抽出されたが、唯一の抽出法の声明ではなく、対象の抽出方法することができます。そして、この方法は、その抽象メソッドです。

抽象クラス定義フォーマット 

  A:抽象メソッドが定義されたフォーマット:

      A:パブリック抽象メソッドの戻り値の型の名前(パラメータ);

  抽象クラスは、フォーマットを定義します。

    抽象クラス类の名{

    }

  例

1つの // 抽象クラスメソッドが抽象宣言されなければならない
2  パブリック 抽象 クラスTest1を{
 3。  
4つの。     // 抽象メソッド、 "{}"を有することができない
5。     パブリック 抽象 ボイドF();
 6     

  抽象クラスに加えて、抽象メソッドを含むが、特定の変数及び特定のメソッドをも含むことができます。抽象メソッドなしクラスを含む、抽象クラスとして宣言することができる、それを防止インスタンス化されます。

  抽象クラスは、抽象メソッドは、サブクラスで実装する必要があり、抽象クラスを取得するために、新しいキーワードのインスタンスを使用しない、すなわち、インスタンス化できません。

  要約アプリケーション:

1つの // 抽象クラスメソッドが抽象宣言されなければならない
2つの パブリック クラスDemo01 {
 3。  
4。     公共 静的 ボイドメイン(文字列[]引数){
 5。          教師教師= 新しい新しい教師( "教師" 。6          teacher.workを() ;
 7          
8。          ドライバは=ドライバ新しい新しいドライバ( "ドライバ" 。9          driver.work();
 10      }
 11      
12れる }
 13である // 抽象クラス
14  抽象 クラス人{
 15      // 抽象メソッド
16      パブリック 抽象 ボイドの仕事();
17  }
 18  クラス教師延び人{
 19      プライベート文字列の作業を、
20      公衆教師(文字列作業){
 21          この .work = 作品。
22      }
 23      @Override
 24      公共 ボイドワーク(){
 25          のSystem.out.println( "我的职业是" + この.work)。
26      }
 27      
28  }
 29  クラスドライバ延び人物{
30      プライベート文字列の作業。
31      公衆ドライバ(文字列作業){
 32          この .work = 作品。
33      }
 34      @Override
 35      公共 ボイドワーク(){
 36          のSystem.out.println( "我的职业是" + この.work)。
37      }
 38 }

ポリモーフィズム

  定義

    多型は、いくつかの異なる形式または同じ行動の症状を持っている能力です。多型は、異なる操作の使用を実行するための異なるインターフェースの同じインスタンスの能力であります

    最終状態は、複数の参照変数は、親クラスのサブクラスにオブジェクトを指すことができ反映します。多型は、前提は、子親関係や関係クラスがインタフェースを実装し、または多型を完了することはできません持っている必要があります。

    ポリモーフィックメソッド呼び出し親クラス参照変数は、子クラスのオーバーライド後のメソッドを呼び出すとき。

  フォーマット:親クラス参照変数サブクラス物点があります

    親クラス型変数名=新しいサブクラスのタイプ();

    変数名、メソッド名();

  ポリモーフィック機能のメンバー

    1.ポリモーフィックメンバ変数:コンパイルと実行を左に見てください         

      FU F =新しい紫()。

      System.out.println(f.num); // fは値フーは、親の値にのみアクセス可能です

    2.マルチステートメンバー方法:実行を右に見て、見て左をコンパイルします

       フーF1 =新しい紫();

            System.out.println(f1.show()); // f1はファサードフーのタイプですが、実際の型は紫なので、メソッド呼び出しが書き換えられています。

  instanceofのキーワード

    処置:オブジェクトは、データ・タイプに属するかどうかを判断します。

    注意:戻り値の型はbooleanです

    例:

1   フーF1 = 新しい新しい紫();
 2          フーF2 = 新しい新しい子();
 3          IF(F1 instanceofのZI){
 4              のSystem.out.println( "Z 1は式F1である" );
 5          }
 。6          {
 7。              システム。 out.printlnを( "F1はソン型である" );
 8 }

  ポリモーフィックの移行   

    遷移上下遷移の2種類に多形転移
      上方遷移:プロセス自体が通って上方に多型変換であります

        フォーマットを使用した:親クラス型変数名=新しいサブクラスのタイプ();

        アプリケーションシナリオ:ときに顔サブクラスの種類、拡張性を増加させることにより、または対応する操作を完了するために、親クラスの機能を使用しています。

      ダウンキャスト:遷移が上方サブクラスオブジェクトは、フォーマットが使用されてもよいサブクラス参照の様々なタイプに親クラス参照のタイプをキャストしています

        フォーマットを使用:変数の変数名=タイプサブクラス(サブクラスタイプ)親クラスタイプ;

        該当するシーン:あなたは、サブクラス固有の機能を使用したいです。

 

おすすめ

転載: www.cnblogs.com/zhai113/p/11569907.html