Javaオブジェクト指向の基本的な文法で05-

 

まず、パッケージ

オブジェクト指向の3つのプロパティ:カプセル化、継承、ポリモーフィズム

公共のシンプルなインターフェイスにのみ開かれ、内部オブジェクトの複雑さを隠します。簡単には、これにより、システムの拡張性、保守性を高め、外の世界を呼び出します。

どのようにパッケージ化します

アクセスは、それぞれの制御改良剤可視境界によって制御されます

(1)クラス

(2)パケット

(3)モジュール:Java9を導入した後

(4)システム

クラスのメンバの場合:4つの許可の修飾子を使用することができます

外部クラスの場合:公共のみデフォルトで使用することができ、両方の

カプセル化されたオブジェクトの属性

  • クラスの背後にある実装の詳細

  • その結果、ユーザできるメソッド内の制御ロジックに追加することができる所定の方法により予めのみアクセスデータ、メンバー変数へのアクセスに不合理な制限。

  • データは、オブジェクト情報の整合性を確保するためであろう、確認することができます。

  • 簡単に変更し、コードの保守性を向上させます。

使用したprivate改変体の変数を

プライベートデータは、変数名を入力します。

ローカル変数と同じ名前のメンバ変数の問題を解決する方法

ローカル変数およびクラス変数クラス変数プラスの前に、同じ名前の(静的メンバ変数は静的変数を変更された)場合、「クラス名」;

インスタンス変数の前にローカル変数と同じ名前のインスタンス変数(非静的メンバ変数)は、インクリメントされたときに「この」。

パッケージ(パッケージ)の演技

(1)のような名前の重複を避けるために:あなたはパッケージを持っていたら、クラスの完全な名前は次のようになります。クラスのパッケージ名

多くの(2)の分類と組織の管理

(3)は、メンバーまたは可視範囲のいくつかのタイプを制御することができます。

許可またはデフォルトの変更、特定の種類のメンバーが、それはこのパッケージの使用に限定されている場合

声明パッケージ

パッケージのパッケージ名。

(1)は、ソースファイル内のコードの最初の行でなければなりません

(2)ソースファイルは、パッケージの宣言文を持つことができます

仕様:すべての単語は、各単語の間の分割を使用して、小文字です。

どのようにJavaコマンド・ファイル内のラインコンパイラとランタイムパッケージ宣言(理解)

javacは-d。TestPackage.java

どこに。意味が現在のディレクトリにパッケージディレクトリを生成します

このクラスを使用正しく実行するには、クラスのフルネーム

クラスのクロスパッケージを使用する方法

前提条件:許可修飾クラスまたはメンバー>はデフォルトを使用することで、あなたが見ることができます

使用のフルネーム(1)タイプ

(2)後コード名ジェーンを使用して、import文を使用します

注意:

import文は、上記の次のパッケージ、クラスでなければなりません

java.util.Dateとjava.sql.Date:2つの異なるクラスには、例えば、同じ名前でパッケージ化すると。完全な名前を使用し、単純な名前を使用します

メンバ変数の初期化の問題

その後、どのように我々はそれをこの時間を行うことができ、私たちはクラスのメンバ変数は、デフォルト値を持っていることを知っているが、時には我々は彼らのために値を指定する番号を割り当てたいですか?

(1)明示的な割り当て

パブリッククラス学生{
  プライベート文字列名=「小明」。
}

(2)初期化ブロック/ブロック

静的初期化ブロック:静的変数の初期化

//初期化するために使用される変数は、より複雑です

[修飾]クラスのクラス名{
  静的{
    静的初期化
  }
}

例としては、初期化:インスタンス変数を初期化します

[修飾] {クラスのクラス名
  {
    インスタンス初期化ブロック
  }
}

EXECUTION

静的初期化ブロック:オブジェクトの初期のインスタンスに設立され、一度だけ、各クラスの静的初期化のクラスローダの実装によって呼び出されるクラスの初期化。

初期化ブロックの例としては:自動的に一度実行されるオブジェクトの毎回新しいインスタンス、各新規のオブジェクトを、実行します。

コンストラクタ

我々はそれを行う方法を、初期化ブロックの例は、オブジェクトの初期化の各インスタンスのインスタンス変数の値と同じである見つけ、私たちが望む場合は、別のインスタンスオブジェクトは異なる値に初期化されますか?この時点では、コンストラクタを使用して検討することができます。

コンストラクタの役割

オブジェクトのインスタンス変数を作成するときに初期値が割り当てられます。

注:インスタンス変数を初期化する唯一のコンストラクタは、静的クラス変数の初期化ではありません

シンタックスコンストラクタ

[修飾]コンストラクタ名(){
  //初期化コードのインスタンス
}
[]コンストラクタ修飾子名(パラメータリスト){
  //インスタンス初期化子
}

注意事項:

  1. コンストラクタの名前は、それがでなければなりませんクラスの名前と同じでなければなりません。

  2. それはノーリターンタイプので、でも無効にする必要がない、値を返しません。

  3. あなたはコンストラクタを提供しない場合、システムはデフォルトコンストラクタのパラメータ、およびクラス修飾子の同じ修飾子のデフォルトコンストラクタを与えないだろう

  4. あなたはコンストラクタを提供する場合は、ユーザーが定義しない限り、システムはもはや、引数なしのコンストラクタを提供しないでしょう。

  5. コンストラクタはオーバーロードされたパラメータが定義されない場合があり、いずれかの定義されたパラメータを。

  6. コンストラクタ修飾子は、特権修飾子は他のどの変更することはできませんすることができ

初期化順序の問題のさまざまな方法

1、クラスの初期化

結論静的初期化順序実行の明示的な割り当て

分析:

実際には、Javaクラス、処理を行うためのクラス・コードをコンパイルするJavaコンパイラは、静的変数コンパイラの明示的な割り当ては、Javaクラスの静的初期設定ステートメントは、に組み込まれます。<clinit> ()クラス初期化メソッド。

図2に示すように、インスタンスの初期化

非静的インスタンス変数、両方の明示的な割り当てた場合は、別のインスタンス初期化ブロックだけでなく、コンストラクタ、結果は何ですか?

結論:

(1)は、明示的に例の初期化ブロックを初期化しますが、彼らはそれによって、インスタンスコンストラクタ作成するかどうか、実行されますが

(2)実施例明示的な割り当て、初期化ブロックの実行順序

(3)最後のコードが実行されるコンストラクタに対応

分析:

実際には、JavaクラスをコンパイルするJavaコンパイラ、インスタンス変数とインスタンスコンパイラの明示的な割り当てを処理して行われるクラスコードが一つに組み立てられたJavaクラスのコンストラクタ文の初期化されますの<init>をクラスは、任意のコンストラクタを宣言していない場合は(...)インスタンスの初期化方法は、あなたがいくつかのコンストラクタを宣言し、最終的に初期化メソッドを対応するいくつかの例がある、そのまた、対応引数なしのデフォルトコンストラクタがあります一例として、初期化メソッドは、パラメータを持っていません。

構成および初期化ブロックの例

ある程度、非静的ブロック(初期化ブロックのインスタンス)にコンストラクタに相補的である、非静的コードブロックは常に、コンストラクタを実行する前に行われます。違いは、コンストラクタ、非静的コードブロックが実行のために固定されたコードであり、それは、任意のパラメータを受信することができないということです。したがって、同じクラスのすべてのオブジェクトの同一の非静的な初期化処理ブロックを行います。すべてのオブジェクトの初期化処理と同一のコードがある場合は、この理由のため、実質的に困難なの使用は、非静的コードブロックを見つけるために、任意のパラメータを指定せず、非静的ブロックにこの初期化処理コードを抽出することができます。

同じ初期化コード、およびこれらの必要性がないパラメータの初期化コードを受信した場合である各コンストラクタは、ブロック内で定義された非静的コードでそれらを置くことができます。非静的ブロックを定義するように構成されたコード抽出部の同じ複数の、より良好なアプリケーション全体の保守性を改善するために、最初のコードの再利用性を向上させることができます。

例クラスの初期化シーケンスの初期化

クラスの初期化がインスタンスよりも優先しなければならない初期化とクラスの初期化は、クラスごとに1回だけ発生し、初期化が一度に実行されなければならないオブジェクトのすべての新しいインスタンスを見ることです。

標準のJavaBean

(1)と、特定のクラスは、パブリックでなければなりません、

(2)は、パラメータなしの構成と方法を有します

(3)メンバ変数の民営化、およびメンバー変数動作を提供setし、get方法を。

 

おすすめ

転載: www.cnblogs.com/Open-ing/p/11862515.html