JAvaの3つの特性

3182 ワード

継承性
  • extends継承Javaは単一継承をサポートし、サブクラスは親クラスのメンバー変数とメンバーメソッドを取得します(静的メソッドと構築メソッドは含まれません).

  • サブクラスのコンストラクション関数ではsuper()で親クラスのコンストラクションメソッドを呼び出す必要があります.
    関連付け:関数のオーバーライド(override)、オーバーライド.Super()とthisの使い方.
  • abstract抽象クラスには抽象関数とメンバー関数があり、抽象クラスは生まれながらにして父親であり、継承可能なクラスである.
  • 抽象クラス&抽象関数
  • 1.抽象クラスはオブジェクトを生成できません.
    2.抽象クラスに抽象関数がなくてもよい.
    3.抽象クラスのコンストラクション関数は、サブクラスでsuper()で呼び出されます.
    4.抽象関数は抽象クラスに宣言する必要があります.
    5.抽象関数abstract void fun();は、関数定義無方法体のみであり、サブクラスに複写(override)が行われていない場合、エラーが報告される.
    抽象クラスはなぜ使用されますか?コードの意味に誤りがある場合は、文法にも誤りがあるはずです.努力して実現している.
  • interface&implementsインタフェースは、オブジェクト向けの真髄がオブジェクト向けの核心であることを体現する標準を定義しています.1.インタフェースを定義することは、呼び出しオブジェクトを定義する基準です.2.インタフェースは特殊な抽象クラスであり、すべてのメソッドはpublicとデフォルトであり、抽象メソッドである.3.インタフェースはマルチ継承をサポートし、1つのクラスは複数のインタフェースを実現することができる.Eg: interface A{…} interface B{…} class implements A, B{…}

  • 設計モードの工場方法モード
    2つのサブクラスHPPrinter&CannonPrinter継承インタフェースPrinterがあります.testクラスでそのプリンタを実装します.
     class test{
      public static void main(String args[]){
           Printer printer = null;
           int flag = 1;
           if(flag == 0){
                 printer = new HPPrinter();
           }
           else if(flag == 1){
                 printer = new CannonPrinter();
           }
           printer.open();
           printer.print("test");
           printer.close();
      }
    }
    

    問:同じ側のプリンタを追加する場合は、testクラスでループ文を再追加し、同じ側のクラスのオブジェクトをPrinterの参照printerに割り当てます.コードの重複が多すぎて、どのように解決しますか?//主なコード機能:ユーザー選択(ユーザー選択に基づいてパラメータ)に基づいてプリンタのオブジェクトを生成し、プリンタタイプ(タイプはプリンタタイプ)にアップグレードします.//printer getPrinter(int flag);
      class PrintFactory{
      public static printer getPrinter(int flag){
           Printer printer = null;
           int flag = 1;
           if(flag == 0){
                 printer = new HPPrinter();
           }
           else if(flag == 1){
                 printer = new CannonPrinter();
           }
           return printer;
      }
    }
    

    HP Cannonの2つのクラスのオブジェクトを生成する場合、直接new()ではなく、この2つのオブジェクトを生成するコードをPrintFactoryクラスに直接カプセル化するgetPrinter()メソッドで、私たちが使用するときにtestクラスで直接getPrinter()を呼び出す.
    public static void main(String args[]){
           int flag = 1;
           Printer printer = PrintFactory.getPrinter(flag);
           printer.open();
           printer.close();
           }
    

    パッヶージせい
  • パッケージとアクセス権パッケージpackage com.baiduインポートパッケージimport java.io.*
  • private(プライベート)
    このクラス
    default(デフォルト)
    このクラス
    現在のパッケージ
    protect(メンバー変数とメンバー関数のみを修飾)
    このクラス
    現在のパッケージ
    その他のパッケージクラス(extends関係があるクラスが2つしかない場合、パケット間アクセスが許可されます)
    public
    このクラス
    現在のパッケージ
    その他のまんじゅう類
    すべてのクラス
  • 修飾子がpublicの場合、クラス名とソースファイルは同じ名前でなければなりません.
  • 子クラス&親クラスが同じパッケージにない場合、default権限のメンバー変数とメンバー関数は継承できません.

  • たじょうたいせい
  • オブジェクトの転換[多様性の一種の体現]
  • 1.オブジェクトのアップグレード:親に子オブジェクトを割り当てる参照Student S = new Student(); Person P = S;は、参照のタイプに応じて、Person P = new Student();の参照がメンバー変数およびメンバーメソッドを呼び出すことができると書くこともできます.参照がどのメンバーメソッドを呼び出すかは、参照が指すオブジェクト2に依存します.オブジェクトのダウンシフト:親オブジェクトが子クラスに値を付与する参照Person P = new Person(); Student S =(Student)P;Lenovo Lenovo:強制タイプ変換
    end