#Java オブジェクト指向とは何ですか?
Java オブジェクト指向説明# ############################################################################################################################################################################################################################################################ 前文:私は長い間プロジェクト開発に携わってきましたが、最近、プロジェクト開発に戻って開発に携わりたいという考えを持ち始めました。以前学んだ基礎知識について書きます。 1つ目はプログラミングを学び始めたばかりで、つまずきながら手探りで進めましたが、学び始めたばかりの頃は、全く分からないことも多く、その後、練習を重ねるうちに徐々に分かってくることもありました。練習量、いくつかの基本的なことを遡って学習することによってのみ、より完全に理解することができます。第三に、いくつかのことは基本的ですが非常に重要であり、しっかりと行う価値があります。
1. オブジェクト指向
オブジェクト指向は、新しいプログラミング手法です。新しいプログラミング パラダイム (パラダイム) の基本的な考え方は、オブジェクト、クラス、継承、カプセル化、ポリモーフィズムなどの基本概念を使用してプログラムを設計することです。現実世界に客観的に存在するもの(オブジェクト)を基にしてソフトウェアシステムを構築し、人間の自然な思考を可能な限り活用してシステム構築を行います。
#2. オブジェクト
オブジェクトは、客観的な物事を記述するために使用されるオブジェクトです。システム エンティティはシステムの基本単位です。オブジェクトは、プロパティのセットと、プロパティのセットに対して動作するサービスのセットで構成されます。 クラスのインスタンス化によりオブジェクトが生成されます。オブジェクトのライフサイクルには、生成、使用、削除の 3 つの段階が含まれます。
オブジェクトへの参照がない場合、そのオブジェクトは役に立たないオブジェクトになります。 Javaのガベージコレクタは、オブジェクトの動的メモリ領域を自動的にスキャンし、参照されていないオブジェクトをガベージとして収集して解放します。システムでメモリが不足するか、System.gc() を呼び出してガベージ コレクションが必要になると、ガベージ コレクション スレッドがシステムと同期して実行されます。
3. クラス
クラスは、同じプロパティを持つオブジェクトのグループです。およびメソッド クラスに属するすべてのオブジェクトの統一された抽象的な説明を提供するコレクション。属性とメソッドという 2 つの主要な部分が含まれます。オブジェクト指向プログラミング言語では、クラスは独立したプログラム単位であり、クラス名があり、属性とメソッドという 2 つの主要部分が含まれている必要があります。 Java でのクラス実装は、クラス宣言とクラス本体の 2 つの部分で構成されます。
クラス宣言
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList]{……}修飾子のうち、public、abstract、final は次のとおりです。 Explain クラスの属性。className はクラス名、superclassName はクラスの親クラスの名前、interfaceNameList はクラスによって実装されるインターフェースのリストです。 #クラス本体
class className{
[public | protected | private ] [static] [final] [transient] [volatile] type variableName;//成员变量
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList]) [throws exceptionList]{
statements
}//成员方法
}
▶ static: 静的変数 (クラス変数)
#▶ Final: 定数、transient: オブジェクトのアーカイブとオブジェクトのシリアル化に使用される一時変数
▶ volatile: 同時スレッド間での共有に使用されるコントリビューション変数
メソッドの実装には、メソッド宣言とメソッド本体という 2 つの部分も含まれます。
#メソッド宣言
メソッド宣言の修飾子の意味:
▶ static: クラス メソッド。クラス名を通じて直接呼び出すことができます。
▶ abstract: 抽象メソッド、メソッド本体はありません。▶ 最終 : メソッドはオーバーライドできません
▶ ネイティブ : 他の言語からのコードを統合します
▶ 同期済み : 複数の同時スレッドによるアクセスを制御します
メソッド宣言には、メソッド名、戻り値の型、および外部パラメーターが含まれます。パラメーターの型は、単純データ型または複合データ型 (参照データ型とも呼ばれます) にすることができます。 メソッド本体 メソッド本体はメソッドの実装であり、ローカル変数の宣言とすべての合法的な Java 命令。メソッド本体で宣言されたローカル変数のスコープはメソッド内です。ローカル変数がクラス メンバー変数と同じ名前を持つ場合、クラス メンバー変数は非表示になります。 パラメータとクラス メンバー変数を区別するには、this を使用する必要があります。これは現在のオブジェクトを参照するためにメソッドで使用され、その値はメソッドを呼び出したオブジェクトです。戻り値は、戻り値の型と一致しているか、まったく同じであるか、そのサブクラスである必要があります。戻り値の型がインターフェイスの場合、戻り値はインターフェイスを実装する必要があります。 施工方法 ▶ 施工方法は特殊な工法となります。 Java のすべてのクラスには、そのクラスのオブジェクトを初期化するコンストラクター メソッドがあります。 ▶ コンストラクターはクラス名と同じ名前を持ち、データ型を返しません。 ▶ オーバーロードはコンストラクターでよく使用されます。 #▶ コンストラクターは new 演算子によってのみ呼び出すことができます 4. 基本的なオブジェクト指向機能 #カプセル化 クラスのメンバーに特定のアクセス権を設定することで、クラス内のメンバーの情報を非表示にすることができます。 ▶ private: private に制限されているクラスのメンバーには、そのクラス自体からのみアクセスできます。クラスのコンストラクターがプライベートと宣言されている場合、他のクラスはクラスのインスタンスを生成できません。 ▶ デフォルト: アクセス許可制限のないクラスのメンバーは、デフォルト (デフォルト) アクセス状態に属し、クラス自体および同じパッケージ内のクラスからアクセスできます。 ▶ protected: protected に制限されているクラスのメンバーは、クラス自体、そのサブクラス (同じパッケージおよび異なるパッケージ内のサブクラスを含む)、および同じアクセス可能なクラスによって保護できます。パッケージ内の他のすべてのクラス。 ▶ パブリック: パブリックに限定されているクラスのメンバーには、すべてのクラスからアクセスできます。
#継承 サブクラスのオブジェクトには、次のすべての属性があります。親クラスとメソッドは、サブクラスによる親クラスの継承と呼ばれます。 ▶ Java では、親クラスは複数のサブクラスを持つことができますが、サブクラスは 1 つの親クラスのみを継承できます。これを単一継承と呼びます。 ▶ 継承によりコードの再利用が可能になります。 ▶ Java のすべてのクラスは、java.lang.Object クラスを直接または間接的に継承することによって取得されます。 ▶ サブクラスは、親クラスのプライベート アクセス権を持つメンバー変数およびメソッドを継承できません。 ▶ サブクラスは親クラスのメソッドをオーバーライドできます。つまり、メンバー変数に親クラスと同じ名前を付けることができます。 Java では、親クラスのメンバーへのアクセスは を通じて行われます。Super は、現在のオブジェクトの親クラスを参照するために使用されます。 super が使用される場合は 3 つの状況があります: ▶ super.variable; ## など、親クラスの非表示のメンバー変数にアクセスします。 #▶ 親クラスの呼び出し クラス内のオーバーライドされたメソッド (例: super.Method([paramlist])、super() 親クラスのコンストラクターの呼び出し; ▶ 親クラスの呼び出しコンストラクター (例: super([paramlist]); ポリモーフィズム オブジェクトのポリモーフィズムとは、親クラスで定義された属性またはメソッドがサブクラスに継承された後、次のことができることを意味します。異なるプロパティ、データ型、または異なる動作を持っています。これにより、同じプロパティまたはメソッドが親クラスとそのさまざまなサブクラスで異なるセマンティクスを持つことが可能になります。たとえば、「幾何図形」の「描画」メソッド、「楕円」、「多角形」はいずれも「幾何図形」のサブクラスであり、「描画」メソッドの機能が異なります。 Java のポリモーフィズムは、メソッドのオーバーロードによって実現される静的ポリモーフィズム (コンパイル時ポリモーフィズム) とメソッド オーバーライドによって実現される動的ポリモーフィズム (実行時ポリモーフィズム) の 2 つの側面に反映されます。 ▶ コンパイル時のポリモーフィズム: コンパイル段階で、どのオーバーロードされたメソッドが具体的に呼び出されるのか、コンパイラーはさまざまなパラメーターに基づいて、呼び出される対応するメソッドを静的に決定します。 ▶ 実行時ポリモーフィズム: サブクラスは親クラスのすべての属性 (プライベート属性を除く) を継承するため、サブクラス オブジェクトを親クラス オブジェクトとして使用できます。プログラム内で親クラス オブジェクトが使用されている場合は常に、代わりにサブクラス オブジェクトを使用できます。オブジェクトは、サブクラスのインスタンスを参照することによって、サブクラスのメソッドを呼び出すことができます。 #オーバーロード ▶ クラス内に複数のメソッドを作成できます。それらのメソッドは同じ名前ですが、異なるパラメータと異なる定義を持ちます。メソッドを呼び出すとき、メソッドに渡されるパラメータの特定の数とタイプによって、使用するメソッドが決まります。 ▶ 戻り値の型は同じでも異なっていてもよく、戻り値の型はオーバーロードされた関数を区別する基準として使用できません。
オーバーライド##▶ サブクラスは親クラスのメソッドを書き換えます。サブクラス内のメソッドのメソッド名、戻り値の型、およびパラメーター リストが親クラスと同じである場合、そのメソッドはオーバーライドされていると言います。 ▶ 親クラスの元のメソッドが必要な場合は、現在のクラスの親クラスを参照する super キーワードを使用できます。 ▶ サブクラス関数のアクセス変更権限は、親クラスのアクセス変更権限より低くすることはできません。
単純なデータ型の場合、Java は値転送を実装します。メソッドはパラメータの値を受け取りますが、これらのパラメータの値を変更することはできません。パラメーターの値を変更する場合は、参照データ型を使用します。これは、参照データ型はメモリ内のデータのアドレスをメソッドに渡し、メソッド内のデータに対する操作によってデータの値が変更される可能性があるためです。 。
以上がJavaオブジェクト指向とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。