Java オブジェクト指向プログラミングの基礎の概要





  • Java はオブジェクト指向プログラミング言語です。オブジェクト指向プログラミング、英語ではObject-Oriented Programming、略してOOPといいます。

オブジェクト指向プログラミングとは何ですか?

オブジェクト指向プログラミング (OOP) は、コンピューター プログラミング フレームワークです。OOP の基本原理は、コンピューター プログラムがサブルーチンとして機能できる個別のユニットまたはオブジェクトで構成されるということです。OOP は、再利用性、柔軟性、拡張性というソフトウェア エンジニアリングの 3 つの主要な目標を達成します。OOP = オブジェクト + クラス + 継承 + ポリモーフィズム + メッセージ。中心となる概念はクラスとオブジェクトです。



グユ

グユ
グユ







オブジェクト指向の基本



①方法

メソッドを定義するための構文は次のとおりです。

修飾子メソッドの戻り値の型 メソッド名 (メソッドパラメータリスト) { 複数のメソッドステートメント; return メソッドの戻り値; }


メソッドの戻り値はreturn文で実現しますが、戻り値がない場合は戻り値の型をVoidとし、returnを省略することも可能です。
完全なメソッドには、通常、メソッド名、メソッド本体、メソッド パラメータ、メソッド戻り値の型が含まれます。



② 施工方法

インスタンスを作成するとき、インスタンスは実際にはコンストラクターを通じて初期化されます。

コンストラクターは非常に特殊なため、コンストラクターの名前がクラスの名前になります。構築メソッドのパラメータに制限はなく、メソッド内に任意のステートメントを記述することもできます。ただし、通常のメソッドと比較して、構築メソッドには戻り値がない (void がない) ため、構築メソッドを呼び出すには new 演算子を使用する必要があります。

コンストラクターは他のコンストラクターを呼び出して、コードの再利用を容易にすることができます。他のコンストラクターを呼び出すための構文は this(…); です。



③メソッドのオーバーロード

同じ名前でパラメータが異なるメソッドは、メソッドのオーバーロードと呼ばれます。
メソッドのオーバーロードの戻り値の型は通常同じです。



④相続

Java は extends キーワードを使用して継承を実装します。
継承の特徴は、サブクラスが親クラスのプライベート フィールドまたはプライベート メソッドにアクセスできないことです。

継承はオブジェクト指向プログラミングの強力なコード再利用方法です。Java
では単一の継承のみが許可され、すべてのクラスの最終ルート クラスは Object です。
保護されているため、サブクラスは親クラスのフィールドとメソッドにアクセスできます。

継承において、サブクラスが親クラスのメソッドと同じシグネチャを持つメソッドを定義する場合、それはオーバーライドと呼ばれます。
メソッドのシグネチャが同じで戻り値も同じ場合、オーバーライドされます。



⑤ ポリモーフィズム

ポリモーフィズムとは、特定の型のメソッド呼び出しの場合、実際の実行メソッドは実行時のメソッドの
実際の型に依存します。Java のメソッド呼び出しは実行時に常にオブジェクトの実際の型に基づいて動作し、この動作はポリモーフィズムと呼ばれます。



⑥抽象クラス

親クラスのメソッド自体が関数を実装する必要がなく、メソッド シグネチャを定義するだけで、サブクラスがそれをオーバーライドできるようにすることが目的の場合、親クラスのメソッドは抽象メソッド (abstract) として宣言できます。 )。
クラスがメソッドを定義しているが、特にコードを実行していない場合、このメソッドは抽象メソッドであり、抽象メソッドは abstract で変更されます。抽象メソッドは実行できないため、このクラスも抽象クラスとして宣言する必要があります。

abstract で変更されたクラスは抽象クラスです。抽象クラスをインスタンス化することはできません。



⑦インターフェース

いわゆるインターフェイス (インターフェイス): フィールドを持つことさえできないため、抽象クラスよりも抽象的な純粋な抽象インターフェイスです。インターフェイスによって定義されたすべてのメソッドはデフォルトでパブリック抽象であるため、これら 2 つの修飾子を書き出す必要はありません (これらの修飾子を記述してもしなくても効果は同じです)。
特定のクラスがインターフェイスを実装する場合、implements キーワードを使用する必要があります。

Java では、クラスは別のクラスからのみ継承でき、複数のクラスから継承することはできません。ただし、クラスは複数のインターフェイスを実装できます。

Java のインターフェイスは、特にインターフェイスの定義 (インターフェイス タイプとメソッド シグネチャのセットを意味します) を指しますが、プログラミング インターフェイスは一般に、メソッド シグネチャ、データ形式、ネットワーク プロトコルなどのインターフェイス仕様を指します。
インターフェイスは別のインターフェイスから継承できます。インターフェイスはインターフェイスを継承し、インターフェイスのメソッドを拡張するのと同じである extends を使用します。



⑧ 静的フィールドとメソッド

static で変更されたフィールドは、static フィールドと呼ばれます。静的フィールドがあるところには、静的メソッドもあります。static で修飾されたメソッドを static メソッドと呼びます。
静的メソッドはインスタンスではなくクラスに属しているため、静的メソッド内では this 変数にもインスタンス フィールドにもアクセスできず、静的フィールドのみにアクセスできます。
静的メソッドはヘルパー メソッドでもよく使用されます。Java プログラムのエントリ ポイントである main() も静的メソッドであることに注意してください。



⑨パッケージ

Java では、パッケージを使用して名前の競合を解決します。
Java は、package: package と呼ばれる名前空間を定義します。クラスは常に特定のパッケージに属します。クラス名 (例: Person) は単なる略語であり、実際の完全なクラス名は packagename.classname です。
Java 仮想マシンが実行されるとき、JVM は完全なクラス名のみを参照するため、パッケージ名が異なる限り、クラスも異なります。パッケージは、 で区切って多層にすることができます。例: java.util。

同じパッケージ内のクラスは、パッケージスコープのフィールドおよびメソッドにアクセスできます。public、protected、または private によって変更されないフィールドとメソッドはパッケージ スコープです。



⑩範囲

公共:

public として定義されたクラスとインターフェイスには、他のクラスからアクセスできます。

プライベート:

プライベートとして定義されたフィールドとメソッドには、他のクラスからアクセスできません。

保護中:

protected として定義されたフィールドとメソッドには、サブクラスだけでなく、サブクラスのサブクラスからもアクセスできます。protected は継承関係に基づいて動作します。

パッケージ:

パッケージ スコープとは、パブリック、プライベートで変更されたクラス、およびパブリック、プロテクト、プライベートで変更されたフィールドとメソッドを持たない同じパッケージへのアクセスを許可するクラスを指します。
同じパッケージ内にある限り、パッケージ権限のクラス、フィールド、メソッドにアクセスできます。



⑪ インナークラス

異なるパッケージの下に異なるクラスを編成します。パッケージの下のクラスは同じレベルにあり親子関係はありません。また、
別のクラスの内部に定義されているクラスもあり、これを内部クラスと呼びます(ネストされたクラス) )



⑫ クラスパスとjar

classpath は、JVM にクラスの検索方法を指示するために JVM によって使用される環境変数です。
JVM は、環境変数 classpath を通じてクラスを検索するパスと順序を決定します。

jar パッケージはディレクトリに相当し、簡単にダウンロードして使用できるように多くの .class ファイルを含めることができます。



⑬テンプレート

Java 9 で導入されたモジュールの目的は依存関係を管理することです。JRE
はモジュールを使用してオンデマンドでパッケージ化できます。
クラスへのアクセス権はモジュールを使用することでさらに制限されます。



------------------------



Javaコアクラス



①文字列とエンコーディング

参照型であり、それ自体もクラスです。その重要な機能の 1 つは、文字列が不変であることです。Java
文字列 String は不変オブジェクトです。
文字列操作では元の文字列の内容は変更されませんが、新しい文字列が返されます。
一般的な文字列操作: 部分文字列の抽出、検索、置換、大文字と小文字の変換など。

初期のコンピュータ システムでは、文字をエンコードするために、米国規格協会 (American National Standard Institute: ANSI) が英語の文字、数字、および一般的な記号の一連のエンコーディングを開発しました。これらのエンコーディングは 1 バイトを占め、範囲は 0 ~ 127 です。最上位ビットは常に 0 であり、これを ASCII エンコーディングと呼びます。
たとえば、文字「A」は 0x41 (10 進数 65) でコード化され、文字「1」は 0x31 (10 進数 49) でコード化されます。

Java では String と char を表すために Unicode エンコーディングが使用されます。
変換エンコーディングは String と byte[] を変換するためのもので、エンコーディングを指定する必要があります。byte
[] に変換する場合は、常に UTF-8 エンコーディングが優先されます。



②文字列ビルダー

これは、文字列を効率的に連結するために使用される可変オブジェクトであり、
文字列を効率的に連結するために、Java の標準ライブラリでは、バッファを事前に割り当てることができる可変オブジェクトである StringBuilder が提供されています。いいえ 新しい一時オブジェクトが作成されます。
StringBuilder はチェーン操作をサポートでき、チェーン操作を実現する鍵はインスタンス自体を返すことです。StringBuffer
は StringBuilder のスレッドセーフ バージョンですが、現在はほとんど使用されていません。



③文字列ジョイナー

区切り文字を指定して文字列配列を結合する場合は、StringJoiner または String.join() を使用すると便利です。StringJoiner を
使用して文字列を結合する場合、追加の「開始」と「終了」を追加できます。



④ 包装形態

int 基本型を参照型にするには、インスタンス フィールド int のみを含む Integer クラスを定義し、Integer クラスを int のラッパー クラス (Wrapper Class) とみなすことができます。



⑤ JavaBean

読み書きメソッドが次の命名規則(get/setメソッド)に従う場合、このクラスはJavaBeanと呼ばれます。

// 読み取りメソッド:
public Type getXyz() { }
// 書き込みメソッド:
public void setXyz(Type value) { }

JavaBean の主な機能はデータを転送すること、つまり、送信を容易にするために一連のデータを JavaBean に結合することです。



⑥列挙型クラス

コンパイラが特定の値が列挙型のセットに含まれていること、およびさまざまな目的の列挙型を異なる型でマークする必要があり、混合できないことを自動的にチェックするために、 enum を使用して列挙型クラスを定義できます。

Java は enum を使用して列挙型を定義し、コンパイラによって最終クラスにコンパイルされます。 Xxx extends Enum { ... };
name() を通じて定数によって定義された文字列を取得します。toString() を使用しないように注意してください
。 ordinal() による定数定義の順序 (実際の意味はありません);
enum のコンストラクター、フィールド、メソッドを作成できます。enum
のコンストラクターは private として宣言する必要があり、フィールドは Final として宣言することを強くお勧めします。enum
はswitch ステートメントでの使用に適しています。



⑦ レコードクラス

Record を使用して不変クラスを定義したり、
Compact Constructor を作成してパラメーターを検証したり、
静的メソッドを定義したりできます。



⑧ BigInteger

java.math.BigInteger は、任意のサイズの整数を表すために使用されます。
BigInteger は不変クラスであり、Number から継承します。BigInteger
を基本型に変換するときに正確な結果を保証するために、longValueExact() などのメソッドを使用できます。



⑨ BigDecimal

BigInteger と同様に、BigDecimal は任意のサイズの浮動小数点数を完全な精度で表現できます。
BigDecimal は正確な小数を表すために使用され、財務計算でよく使用されます。BigDecimal
の値が等しいかどうかを比較するには、equals() の代わりに CompareTo() を使用する必要があります。



⑩ 共通ツール

数学

Math クラスは数学的計算に使用され、数学的計算の実装を容易にする多数の静的メソッドを提供します。

ランダム

Random は、擬似乱数を作成するために使用されます。いわゆる擬似乱数とは、最初のシードが与えられている限り、生成される乱数のシーケンスはまったく同じであることを意味します。

セキュアランダム

SecureRandom は、安全な乱数を作成するために使用されます。









注:
いいね、コメント、転載は大歓迎です 記事ページのわかりやすい場所に原文へのリンクをお願いします ご存知の
方、大勢の中、私の記事を読んでいただきありがとうございます
個性のない署名はどこにありますか!
詳細については、私に
注目して更新し続けてください

スキャンしてサプライズを楽しみましょう!
© 2021 04 - Guyu.com | 【著作権全著作権所有】

おすすめ

転載: blog.csdn.net/weixin_49770443/article/details/115199723