Java-オブジェクトとクラス
Javaはオブジェクト指向言語です。オブジェクト指向機能を備えた言語として、Javaは次の基本的な概念をサポートしています-
- ポリモーフィズム
- 継承
- カプセル化
- 抽象化
- クラス
- オブジェクト
- インスタンス
- メソッド
- メッセージの受け渡し
この章では、概念-クラスとオブジェクトについて説明します。
-
オブジェクト-オブジェクトには状態と動作があります。例:犬には、色、名前、品種、行動などの状態があり、尻尾を振ったり、吠えたり、食べたりします。オブジェクトはクラスのインスタンスです。
-
クラス-クラスは、そのタイプのオブジェクトがサポートする動作/状態を説明するテンプレート/ブループリントとして定義できます。
Javaのオブジェクト
ここで、オブジェクトとは何かを詳しく見ていきましょう。現実の世界を考えると、車、犬、人間など、身の回りにある多くの物体を見つけることができます。これらの物体にはすべて、状態と行動があります。
犬を考えると、その状態は-名前、品種、色、行動は-吠える、尻尾を振る、走る。
ソフトウェアオブジェクトを実際のオブジェクトと比較すると、非常によく似た特徴があります。
ソフトウェアオブジェクトにも状態と動作があります。ソフトウェアオブジェクトの状態はフィールドに格納され、動作はメソッドを介して表示されます。
したがって、ソフトウェア開発では、メソッドはオブジェクトの内部状態を操作し、オブジェクト間の通信はメソッドを介して行われます。 。
Javaのクラス
クラスは、個々のオブジェクトを作成するための青写真です。
以下はクラスのサンプルです。
例
public class Dog { String breed; int age; String color; void barking() { } void hungry() { } void sleeping() { }}
クラスには次の変数タイプのいずれかを含めることができます。
-
ローカル変数-変数メソッド内で定義されたコンストラクターまたはブロックはローカル変数と呼ばれます。変数はメソッド内で宣言および初期化され、メソッドが完了すると変数は破棄されます。
-
インスタンス変数−インスタンス変数は、クラス内でメソッド外の変数です。これらの変数は、クラスがインスタンス化されるときに初期化されます。インスタンス変数には、その特定のclaのメソッド、コンストラクター、またはブロック内からアクセスできます。 ss。
-
クラス変数-クラス変数は、staticキーワードを使用して、クラス内、メソッド外で宣言された変数です。
クラスには、さまざまな種類のメソッドの値にアクセスするためのメソッドをいくつでも含めることができます。上記の例では、barking()、hungry()、sleeping()がメソッドです。
以下は、Java言語のクラスを調べるときに説明する必要のある重要なトピックの一部です。
コンストラクター
クラスについて議論するとき、最も重要なサブトピックの1つはコンストラクターです。すべてのクラスにはコンストラクターがあります。クラスのコンストラクターを明示的に記述しない場合、Javaコンパイラーはそのクラスのデフォルトコンストラクターを構築します。
新しいオブジェクトが作成されるたびに、少なくとも1つのコンストラクターが呼び出されます。コンストラクターの主なルールは、クラスと同じ名前にする必要があるということです。クラスは複数のコンストラクターを持つことができます。
以下はコンストラクターの例です-
例
public class Puppy { public Puppy() { } public Puppy(String name) { // This constructor has one parameter, name. }}
Javaは、クラスのインスタンスを1つだけ作成できるシングルトンクラスもサポートしています。
注-コンストラクターには2つの異なるタイプがあります。コンストラクターについては、以降の章で詳しく説明します。
オブジェクトの作成
前述のように、クラスはオブジェクトの青写真を提供します。つまり、基本的に、オブジェクトはクラスから作成されます。 Javaでは、newキーワードを使用して新しいオブジェクトを作成します。
クラスからオブジェクトを作成する場合は3つのステップがあります-
-
宣言-変数宣言オブジェクトタイプの変数名を使用します。
-
インスタンス化-「new」キーワードを使用してオブジェクトを作成します。
-
初期化-「new」キーワードの後にコンストラクターが呼び出されます。この呼び出しにより、新しいオブジェクトが初期化されます。
以下は、オブジェクトの作成例です-
例
コンパイルして上記のプログラムを実行すると、次の結果が生成されます-
出力
Passed Name is :tommy
インスタンス変数とメソッドへのアクセス
インスタンス変数とメソッドは、作成されたオブジェクトを介してアクセスされます。インスタンス変数にアクセスするための完全修飾パスは次のとおりです-
例
この例では、クラスのインスタンス変数とメソッドにアクセスする方法について説明します。
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
出力
Name chosen is :tommyPuppy"s age is :2Variable Value :2
ソースファイル宣言ルール
このセクションの最後の部分として、ソースファイル宣言ルールを見てみましょう。これらのルールは、ソースファイルでクラス、インポートステートメント、およびパッケージステートメントを宣言するときに不可欠です。
-
ソースファイルごとに存在できるパブリッククラスは1つだけです。
-
ソースファイルには複数の非パブリッククラスを含めることができます。
-
パブリッククラス名は、ソースファイルの名前でもあり、最後に.javaを追加する必要があります。例:クラス名はpublic class Employee {}その場合、ソースファイルはEmployee.javaのようになります。
-
クラスがパッケージ内で定義されている場合、パッケージステートメントはソースファイルの最初のステートメントである必要があります。
-
インポートステートメントが存在する場合は、パッケージステートメントとクラス宣言。パッケージステートメントがない場合は、インポートステートメントをソースファイルの最初の行にする必要があります。
-
インポートステートメントとパッケージステートメントは、ソースファイルに存在するすべてのクラスを意味します。 。ソースファイル内の異なるクラスに異なるインポートおよび/またはパッケージステートメントを宣言することはできません。
クラスにはいくつかのアクセスレベルがあり、異なるタイプのクラスがあります。抽象クラス、最終クラスなど。これらすべてについては、アクセス修飾子の章で説明します。
上記のタイプのクラスの他に、Javaには内部クラスおよび匿名クラスと呼ばれるいくつかの特別なクラスもあります。
Javaパッケージ
簡単に言うと、これはクラスとインターフェースを分類する方法です。 Javaでアプリケーションを開発する場合、何百ものクラスとインターフェースが作成されるため、これらのクラスを分類することは必須であり、作業がはるかに簡単になります。
ステートメントのインポート
Javaではパッケージとクラス名を含む完全修飾名が与えられると、コンパイラーはソースコードまたはクラスを簡単に見つけることができます。 Importステートメントは、コンパイラがその特定のクラスを見つけるための適切な場所を指定する方法です。
たとえば、次の行は、ディレクトリjava_installation / java / io-で使用可能なすべてのクラスをロードするようコンパイラに要求します。
import java.io.*;
簡単なケーススタディ
このケーススタディでは、2つのクラスを作成します。それらはEmployeeとEmployeeTestです。
最初にメモ帳を開き、次のコードを追加します。これはEmployeeクラスであり、クラスはパブリッククラスであることを忘れないでください。ここで、このソースファイルをEmployee.javaという名前で保存します。
Employeeクラスには、名前、年齢、指定、給与の4つのインスタンス変数があります。このクラスには、パラメーターを受け取る明示的に定義されたコンストラクターが1つあります。
例
このチュートリアルで前述したように、処理はmainメソッドから始まります。したがって、このEmployeeクラスを実行するには、mainメソッドが必要であり、オブジェクトを作成する必要があります。これらのタスク用に個別のクラスを作成します。
以下はEmployeeTestクラスです。このクラスは、クラスEmployeeの2つのインスタンスを作成し、各オブジェクトのメソッドを呼び出して、各変数に値を割り当てます。
次のコードをEmployeeTest.javaファイルに保存します。
次に、両方のクラスをコンパイルしてからEmployeeTestを実行し、次のように結果を確認します-
出力
次は何ですか?
次のセッションでは、Javaの基本的なデータ型と、Javaアプリケーションを開発するときにそれらを使用する方法について説明します。