javaの - 抽象クラスとインターフェイスクラス

.protected権利修飾子

パブリック クラスProtectedTest {
     公共 静的 ボイドメイン(文字列[]引数){ 
        
        // 現在の属性および方法は、パッケージを呼び出すことができる保護された修飾。
        // サブクラスの異なるパッケージがアクセス保護されたプロパティおよび方法に変更することができる 
        人の人= 新しい新;パーソン()
    } 
}
インポートcom.atguigu.exer.Person; 

パブリック クラスProtectedTest {
     公共 静的 ボイドメイン(文字列[]引数){ 
        人人 = 新しい新規人物(); 
        スチューデントSTU = 新しい新しい学生(); 
        stu.demo(); 
    } 
} 

// 異なるパッケージのサブクラスがアクセス保護プロパティおよびメソッドに変更することができる
クラスの学生延び人{
     公共 ボイドデモ(){ 
        System.out.printlnは(protectedName)を; 
        言います(); 
    } 
}
パブリック クラス人{
     保護された文字列protectedName。
    
    保護された 、ボイド(){言う
        のSystem.out.println( "言います" ); 
    } 
}

二.abstract抽象クラス

1.キーワード:アブストラクト(4オブジェクト指向特性:カプセル化、継承、多型、抽象クラス)

この方法は、修正されてもよい2.abstract抽象メソッド
  抽象メソッドは、メソッド本体

3.abstractカテゴリが変更されないことがあります。抽象クラス
  1クラス抽象メソッドは、抽象クラスとして配置されなければならない
  2.抽象クラスをインスタンス化できない
  考察:抽象クラスのコンストラクタを有しますそれは?そこ-サブクラスのインスタンス化プロセスとして:コンストラクタは、親クラスを呼び出す必要があります
  。3.抽象クラスは、抽象メソッドはできません。この方法は、非抽象持つことができます
  。4.非抽象サブクラスは抽象親クラスの抽象メソッドをオーバーライドする必要があります。親クラス非抽象メソッドが抽象メソッドをオーバーライドする場合は、サブクラスは抽象メソッドでオーバーライドしないでしょう

4.abstractで使用していないこれらのキーワードを?
  プライベート、最終的に、静的

パブリック クラスAbstractTest {
     公共の 静的な 無効メイン(文字列[] args)を{ 
        ブックブック = 新しい新しいブック(); 
        book.read(); 
    } 
} 

// 抽象クラスの作成
抽象 クラスライブラリ{
     // それ自体がない実用的な意味を、しかし、それはマルチステートを書かなければならないことを考えると、このメソッドは抽象メソッドとして宣言することができる
     公共の 抽象 ボイド)(読み取り; 
} 

クラスインクルードは、拡張ライブラリ{
     公共 ボイド読む(){ 
        System.out.printlnは(「良いを読んで書籍、充実した人生を味わいます" ); 
    } 
}

 

コードブロック:クラスの3人のメンバーの一人

フォーマット:{}

説明:
  コードの1ブロックのみ静的修飾することができます

分類コードブロック:VS静的コードブロックの非静的ブロック

符号の静的ブロック:
  1.情報は、クラス初期化するために使用される
  コードの静的ブロック2.ロードされ、ロードされたクラスは一度だけロードされる
  3静的コードブロックは、上から下に実行される複数の、順次実行有することができる
  のみ(なぜならローディングの異なるタイミングの)静的クラス変数およびメソッドを呼び出すことができるコードの4静的ブロックを
  装填ブロック非静的に優先して前記静的コードブロック

の非静的コードブロック:
  1は、オブジェクトを初期化するために使用される
  非静的ブロックと2を作成し、オブジェクトがロードされる
  。3.負荷を非静的コードコンストラクタよりも優先される
  非静的ブロック4の複数を有することができ、実行のために順次次に行わ
   5ブロックの非静的クラス変数および静的メソッドを呼び出すことができ

、コード番号が一度だけロードされている場合、静的にコードブロック間考えることができます

    {
         //     非静的ブロック 
        のSystem.out.println( "{}" + 名); 
        
    } 
    
    静的{
         // 静的コードブロック 
        のSystem.out.println( "{} 1。" + 年齢); 
    }

四個の.finalキーワード

簡単に、最終的なキーワードを説明してください?
 最終修正クラスは:継承することはできません

、最終的な修正方法を:あなたは書き換えることができない

一回だけ割り当てることができ、(多くの場合、定数として変数を変更)を初期化する必要があります。最終的に修正される変数を
、ディスプレイの割り当て:3通りの方法で、最終的な割り当てコードブロックの割り当て、割り当てコンストラクタ

*変数割付:デフォルト値を割り当てる2.ディスプレイ3割当ブロックコンストラクタ4オブジェクト名の割り当てメソッド名/。オブジェクトのName属性。
  * 
 *評価順序:1 < - 2/3(誰がで、誰べき割当)< - 4 < - 5

例1

// デザインテンプレート

パブリック クラスTemplateMethod {
     公共 静的 ボイドメイン(文字列[]引数){ 
        コードコード = 新しい新しいCODE2(); 
        code.runTime(); 
    } 
} 

抽象 クラスコード{ 
    
    公共 ボイドランタイム(){
         // 計算開始コード時間
        ロング START = のSystem.currentTimeMillis(); 
        
        //を実行するコード実行
        、RUNCODEを()
        
        // 終了タイムコードを算出
        ロング端= にSystem.currentTimeMillis(); 
        
        // 時間差を計算します
        System.out.println( "時間=" +(終了- 開始)); 
    } 
    
    パブリック 抽象 ボイドRUNCODE()。
} 

クラス CODE2は延びコード{ 
    
    公共 ボイドRUNCODE(){
         ためint型 i = 1; iが100 <; iは++ ){
             場合(I%2 == 0 ){ 
                のSystem.out.println(I)。
            } 
        } 
    } 
}

V.インタフェースクラスインターフェース

インターフェイスの新機能jdk1.8とき:

  1.インタフェースに加えては、定数と抽象メソッドを持つことができ、あなたはまた、デフォルトのメソッドと静的メソッド持つことができる

  静的メソッドを呼び出す方法2.:staticメソッド名インタフェース名
  デフォルトのメソッドを呼び出す方法:実装クラスをオブジェクト名のデフォルトの方法。

  3.優先の原則:同じ親クラスとクラス・インターフェース。クラスクラスのメソッドの親オブジェクトによって呼び出され、このメソッド

  のクラスの同じ複数のクラスは、このメソッドオーバーライドする必要がある場合、クラス4は、複数のインタフェース、デフォルトの方法を実装する

  クラスで5.メソッド呼び出しインタフェースのデフォルトの方法:デフォルトのメソッド名.superインターフェイス名。

 

インターフェイス:インターフェイス

形式:インターフェースインターフェース名} {

説明:
  1.インタフェースとクラスが並置されている関係は、
  2インタフェースはインスタンス化できない
  インターフェイスは(jdk1.8前)定数及び抽象メソッドを有することができる。3.
  4.インタフェースと関係:継承が、多重継承
  クラスとインタフェース5との間の関係:クラスのクラス名は、インターフェイスを実装するだけでなく、(Javaは単一継承以上を達成することである)複数のインタフェースを実装することができる
  クラスとインタフェースとの間の多型を6

使用インタフェースクラス:
  1.同じ現象は、これらのクラス間の階層関係を考慮せず、無関係なクラスインターフェース・クラスによって達成することができる
  インターフェースを介して2、典型的には、オブジェクトを定義するために使用される、複数のクラスの方法を達成するための必要性を示すことができます拡張機能
  3.主にインタフェース仕様を定義するために使用されます。お問い合わせカップリングの関係

パブリック クラスInterfaceTest {
     公共の 静的な 無効メイン(文字列[] args)を{ 
        
        マウスマウス = 新しい新しいマウス(); 
        
        コンピュータコンピュータ = 新しい新しいコンピュータ(); 
        computer.useMouseBlue(マウス); 
        computer.useMouseUsb(マウス); 
        
        // 作成インタフェースオブジェクトの実装クラス匿名の 
        USBキロバイト= 新しい新しいUSB(){ 
            @Override 
            公共 のボイドスタート(){
                 // TODO自動生成されたスタブメソッド 
                のSystem.out.println(「通常の接続キーボード」); 
            } 
            
            @Override
            公共 ボイドエンド(){
                 // TODO自動生成されたスタブメソッド 
                のSystem.out.println(「キーボードが切断」); 
            } 
        }; 
        
        computer.useMouseUsb(KB); 
        
        
        // 匿名匿名オブジェクトの実装クラスを作成します 
        computer.useMouseUsb(新新USB(){ 
            
            @Override 
            公共 のボイドスタート(){
                 // TODO自動生成されたスタブ方法、 
                のSystem.out.println( "良い夜" ); 
            } 
            
            @Override 
            公共 無効エンド(){
                 //自動生成されたメソッドスタブTODO 
                のSystem.out.println( "明日" ); 
            } 
            
        }); 
        
    } 
} 

クラスのコンピュータ{ 
    
    公共 useMouseUsb(USBのUSB){ 
        usb.start(); 
        System.out.printlnは(「正常な接続" ); 
        usb.end(); 
    } 
    
    公共 ボイドuseMouseBlue(ブルートゥースBT){ 
        bt.startBlue(); 
        のSystem.out.println( "通常のブルートゥース接続" ); 
        bt.endBlue(); 
    } 
} 

インターフェイスブルートゥース{
     ボイドstartBlue ();
     無効endBlue(); 
} 

インターフェイスUSB {
     無効スタートを(); // デフォルトに自動的に追加抽象公共
    のボイドエンド(); 
} 

クラスマウス実装USB、ブルートゥース{ 
    
    @Override 
    公共 のボイドスタート(){ 
        System.out.printlnは(「マウス"実行を開始;)
    } 
    
    @Override 
    公共 無効エンド(){ 
        System.out.printlnは(マウスが動作を停止" " ); 
    } 
    
    @Override 
    公共 無効startBlue(){ 
        System.out.printlnは( " "Bluetoothは接続開始);
    } 
    
    @Override 
    公共 ボイドendBlue(){ 
        System.out.printlnは( "ブルートゥースを切断" ); 
    } 
}

 

おすすめ

転載: www.cnblogs.com/jiujiang/p/11613891.html