この記事は Java オブジェクトに関する知識の要点をまとめたものであり、必要な方は参考にしていただければ幸いです。
Java はオブジェクト指向言語であるため、オブジェクトのさまざまな定義と理解を個別に記録する必要があります。
オブジェクトと向き合う。主にオブジェクト指向の考え方、クラスとオブジェクトとその使用、オブジェクトのメモリ マップ、メンバー変数とローカル変数の違い、匿名オブジェクト、カプセル化 (プライベート) ) 、このキーワード、コンストラクター メソッド、静的キーワード。
1. 概要: プロセス指向の考え方に基づいており、プロセス指向プログラミングをカプセル化したものです。
2. オブジェクト指向開発: オブジェクトを常に作成し、使用し、オブジェクトに動作を指示することを意味します。
3. オブジェクト指向設計: 実際には、オブジェクト間の関係を管理および維持します。
4. オブジェクト指向の機能: カプセル化、継承、ポリモーフィズム
5. クラスとオブジェクトの関係:
(1) クラス: 関連する属性のセット動作の集合
(2) オブジェクト: このタイプのものの具体的な具体化です
6. 匿名オブジェクト:
(1) 名前のないオブジェクトです。表現
(2) 匿名オブジェクトの 2 つの使用状況: 1. オブジェクトがメソッドを 1 回だけ呼び出す場合 2. 実際のパラメーターとして渡す
1. Student s = new Student();メモリ内で何をするのでしょうか?
(1) Student.class ファイルをメモリにロードします
(2) スタック スペースに s 用のスペースを作成します
(3) ヒープ メモリに Student オブジェクト用のスペースを作成します
(4) 右 Student オブジェクトのメンバー変数はデフォルトで初期化されます
(5) Student オブジェクトのメンバー変数の初期化を表示します
(6) Student オブジェクトのメンバー変数に値を代入します構築メソッド
(7) オブジェクト アドレスを s 変数
2 に割り当てます。クラスには、基本的に、継承、ポリモーフィズム、抽象クラス、インターフェイス、パッケージおよびガイド パッケージ、権限が含まれます。修飾子、内部クラス
1. 概要: 複数のクラスに同じ属性や動作が存在する場合、それらの内容を 1 つのクラスに抽出する必要はありません。これらの属性と動作を定義し、このクラスを継承するだけで済みます。
2. クラス間の継承は、extends キーワードによって実現できます。この単一のクラスは、親クラス、または基本クラス、またはスーパークラスと呼ばれます。サブクラスまたは派生クラス
4 と呼ばれます。 継承を使用すると、クラスを定義するときに、既存のクラスに基づいて独自の新しいメンバーを定義できます。 利点 :
5。 (1) コードの再利用性の向上
(2) コードの保守性の向上(3) ポリモーフィズムの前提となるクラス間の関係性の構築
(4) クラスの欠点の 1 つは、クラスの結合が非常に強いこと
6. 注:
(1) サブクラスは、親クラスのすべての非プライベート メンバー (メンバー) のみを継承できます (メソッドとメンバー変数)
(3) クラスの一部の機能は継承しません
7. 継承におけるコンストラクタ間の関係:
(1) サブクラス内のすべてのコンストラクタは、デフォルトで親クラスの空のパラメータを持つコンストラクタになります
(3) 各コンストラクター メソッドの最初のステートメントは、デフォルトでは次のとおりです。 super()
(4) コンストラクター メソッドがない場合親クラス内で行うべきこと: [1] サブクラスは super を使用して、パラメータを持つ親クラスの他のコンストラクターを明示的に呼び出します
[2] サブクラスは、このクラスを通じてこのクラスの他のコンストラクターを呼び出します
[3 ] 最初のステートメントに super() と this() を指定する必要があることに注意してください。そうしないと、親クラス データの初期化が複数回行われます。メソッドの書き換え:
( 1) 概要: 親クラスとまったく同じメソッド ステートメントがサブクラスに出現します。メソッドの上書き、メソッドのオーバーライドとも呼ばれます
(2) 親クラスのプライベート メソッドはオーバーライドできません
(3)サブクラスが親クラスのメソッドを書き換える場合、アクセス許可を低くすることはできません
1、静的キーワード:
(1) メンバ変数とメンバメソッドの変更が可能
(2) 特徴:
[1] クラスのロードと同時にロードされる
[2] オブジェクトよりも優先順位が存在する
[3] ] クラスのすべてのオブジェクトで共有
[4] クラス名を通じて呼び出すことができます
(3) 注:
[1] 静的メソッドには this キーワードはありません
[2] 静的メソッド 静的メンバ変数と静的メンバ メソッドのみにアクセスできます
(4) 静的変数とメンバ変数の違い:
[1] 静的変数はクラスに属するため、クラスのメンバ変数にもなります。オブジェクトなのでインスタンス変数とも呼ばれます
【2】静的変数はメソッド領域の静的領域に格納され、メンバ変数はヒープメモリに格納されます
【3】静的変数はロードされますクラスがロードされると、クラスが消えると消えます。メンバー変数は、オブジェクトの作成とともに存在し、オブジェクトの消滅とともに消えます。
[4] 静的変数は、クラス名またはオブジェクトのメンバーを通じて呼び出すことができます。変数はオブジェクト名を通じてのみ呼び出すことができます
2. スーパー キーワード:
(1) スーパーとこのキーワードの使用法は、このクラスに対応する参照を表します。 super は親クラスの記憶領域の識別を表します (親クラスの参照として理解できます)
(2) super を使用して親クラスのコンポーネントを参照し、this を使用して現在のオブジェクトを参照します
3. 最終キーワード:
(1) 最終キーワードは、final です。つまり、クラス、メンバー変数、メンバー メソッドを変更できます。
(2) クラスを変更します。クラスは継承できません
(3) 変数を変更します。変数は定数になり、1 回だけ代入できます。
(4 ) 変更メソッド。メソッドはオーバーライドできません。
1 概要: A.特定のものは異なる時点で異なる状態を示します
2. 多態性の前提と明示: 継承関係があり、メソッドの書き換えがあり、サブクラス オブジェクトを直接指す親クラス参照があります
3利点:
(1) プログラムの保守性の向上 (継承によって保証)
(2) プログラムのスケーラビリティの向上 (ポリモーフィズムによって保証)
4.サブクラス固有の関数にアクセスできません
1. 概要: メソッド本体のないメソッドは抽象メソッドとして定義する必要があり、クラス内に抽象メソッドがある場合は、クラスは抽象クラス
2 として定義する必要があります。 機能:
(1) 抽象クラスおよび抽象メソッドは、抽象キーワードによって変更する必要があります。
(2) 抽象クラスは変更しません。抽象メソッドは必ず必要であり、抽象メソッドを持つクラスは抽象クラスでなければなりません
(3) 抽象クラスはインスタンス化できません
(4) では、抽象クラスはどのようにインスタンス化されるのでしょうか。多態性メソッドに従って、具象サブクラスがインスタンス化されます。
(5) 抽象クラスのサブクラス。抽象クラス、または抽象クラス内のすべての抽象メソッドをオーバーライドします。
3. メンバーの特性:
(1) メンバ変数は変数でも定数でも構いません
(2) コンストラクタはありますが、インスタンス化できません。では、コンストラクター メソッドの役割は何でしょうか?ユーザー サブクラスが親クラス データにアクセスするための初期化
(3) サブクラスが特定のアクションを完了するように制限する抽象メソッドが存在する可能性があります
(4) コードの再利用性を向上させる非抽象メソッドも存在する可能性があります
( 5 ) 抽象メソッドはパブリックまたはプロテクトである必要があります (プライベートの場合はサブクラスに継承できず、サブクラスはメソッドを実装できないため)。デフォルトでは、public
です。 1. 概要: ソフトウェア工学では、インターフェイスは一般に、インターフェイスの特性を抽象化したものを指します。 (1) 使用方法 キーワード インターフェイスは次のことを表します: インターフェイス インターフェイス名 {}
(2) クラス実装インターフェイスはimplements で表されます: class クラス名implements インターフェイス名 {}(3) インターフェイスはインスタンス化できませんが、これは、ポリモーフィックな方法で実装でき、特定のサブクラスによってインスタンス化されます。
(4) インターフェイスのサブクラス: 抽象クラス、またはインターフェイスのすべての抽象メソッドをオーバーライドします。
3.
(1) メンバー変数: 定数のみにすることができ、デフォルトの修飾子は public、static、final です
(3) インターフェイス メンバー メソッドは抽象メソッドのみにすることができ、デフォルトの修飾子は public、abstract です
クラス間、クラス対インターフェイス、インターフェイス対インターフェイスの関係
1. クラス間: 継承関係、単一継承のみ可能ですが、マルチレベル継承も可能です
7. 抽象クラスの抽象メソッドはサブクラスによって実装される必要があります。サブクラスが親クラスのすべての抽象メソッドを実装できない場合、サブクラスは抽象クラスのみになります。同様に、インターフェイスを実装するときに、すべてのインターフェイス メソッドを実装できない場合、そのクラスは抽象クラスのみになります。
#8 抽象メソッドは宣言のみ可能で、実装はできません。インターフェイスは設計の結果であり、抽象クラスは再構築の結果です。9 インターフェイスは複数のインターフェイスを継承できますが、クラスは 1 つの抽象クラスのみを継承できます。特定のメソッドと属性を持つことができます。インターフェイスは抽象メソッドと不変定数のみを持つことができます。11. 物事の本質に焦点を当てる場合は、抽象クラスを使用します。操作に焦点を当てる場合は、インターフェイスを使用します。 パッケージ: package1. 概要: 実際にはクラスを分類して管理するフォルダーです。2. 定義: パッケージ パッケージ名3。注: (1) package ステートメントはプログラムの最初の実行可能コードである必要があります(2) Java ファイルには package ステートメントは 1 つだけ存在できます
(3) package ステートメントが存在しない場合パッケージ、デフォルトはパッケージ名なしを意味します
4. パッケージを使用したクラスのコンパイルと操作:
[1] javac は現在のクラス ファイル
をコンパイルします。 [2] パッケージに対応するフォルダーを手動で作成します [3] コンパイルしたクラス ファイルを前の手順で作成したフォルダーに配置します
[4] java コマンドを介して実行します。この名前で実行する必要があります。パッケージの: java testpackage.HelloWorld
(2) 自動タイプ:
[1] javac のコンパイル時に -d パラメータを指定して実行: javac -d .HelloWorld.java
[2] java を通じて実行マニュアルタイプ
5 と同じコマンドです。 ガイドパッケージ:
(2) パッケージインポート形式: クラス名
内部クラス
(2) 外部クラスは、次のことを行う必要があります。内部クラスのメンバーになりたい場合は、オブジェクト
3 を作成する必要があります。 内部クラスの位置:
(2) メンバー内部クラス:
[1] 共通の修飾子: private、static [2] 静的に変更されるメンバー内部クラスのみ 外部クラスの静的メンバーにアクセスできます
(3) ローカル内部クラス:
[1] 外部クラスのメンバーに直接アクセスできます
[2] を作成できます内部クラス オブジェクトを作成し、そのオブジェクトを通じて内部クラス メソッドを呼び出します。 ローカル内部クラス関数の使用
[3] ローカル フェイス変更にアクセスするには、ローカル内部クラスを Final で変更する必要があります。ローカル変数はメソッド呼び出しが完了すると消えるため、この時点ではローカル オブジェクトはヒープ メモリからすぐには消えず、引き続きその変数を使用する必要があります。データを引き続き使用できるようにするために、ヒープ メモリに格納される内容が実際には定数値になるように、final でデータが変更されます。
(4) 匿名内部クラス:
[1] 内部クラスの簡略化した書き方です
[2] 形式: 新しいクラス名またはインターフェイス名 (){}
[3] 前提: クラスまたはインターフェイスがあります。ここでのクラスは、具体的な通常のクラスにすることも、抽象クラスにすることもできます
[4] 本質: クラスを継承するか、インターフェイスを実装するサブクラスの匿名オブジェクトです
[5] 匿名内部クラスは実際にはサブクラス匿名オブジェクトであると言えます
以上がJava オブジェクトのナレッジポイントの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。