java class vs object how use class
このチュートリアルでは、OOPSの概念の1つについて詳しく説明します。例とともに、Javaクラスとオブジェクトについてすべて説明します。
オブジェクト指向プログラミングはデータを強調するため、オブジェクトと呼ばれるエンティティを中心に展開します。クラスは、これらのオブジェクトの青写真として機能します。
クラスとそのコンポーネントを作成する方法を見てみましょう。また、このチュートリアルの後半でプログラミング例を使用して、Javaでオブジェクトを作成および初期化する方法についても学習します。
=> 独占的なJavaトレーニングチュートリアルシリーズについては、こちらをご覧ください。
学習内容:
Javaのクラスとオブジェクト
Javaでは、すべての機能、属性、メソッドなどがクラスとオブジェクトにリンクされています。 C ++で実行できる方法でクラスを宣言せずに、main関数だけでJavaプログラムを作成することはできません。
例えば、 車両でプログラムを作成する場合、車両はリアルタイムオブジェクトです。しかし、車両にはさまざまな種類があります。つまり、車両には、車、トラック、スクーター、自転車などのさまざまな値をとることができるtype属性があります。
したがって、JavaでVehicleオブジェクトを表現する方法は、クラス「Vehicle」を作成してから、そのさまざまな属性を定義することです。次に、car、bikeなどのさまざまなVehicleクラスオブジェクトを宣言できます。
クラス内で、Vehicleのプロパティをクラス属性(データメンバー)およびstartVehicle()、stopVehicle()などのメソッドとして定義できます。
このように、Javaでエンティティの最小値を表現するには、最初にオブジェクトを識別してから、そのブループリントまたはクラスを定義する必要があります。
それでは、最初にクラスとオブジェクトについてすべてを学び、次にJavaでのOOPの他の概念に移りましょう。
Javaのクラス
Javaでプログラムを開発するには、オブジェクトとクラスを利用します。 Javaのクラスは論理ユニットにすぎませんが、Javaのオブジェクトは物理エンティティと論理エンティティの両方です。
Javaのオブジェクトとは何ですか?
オブジェクトは、状態を持ち、動作を示すエンティティです。 例えば、 ペン、ラップトップ、携帯電話、テーブル、椅子、車などの実際のエンティティはすべてオブジェクトです。これらのオブジェクトはすべて、物理的(有形)または論理的(無形)のいずれかです。
無形のオブジェクトは、ほとんどが航空会社システム、銀行システムなどです。これらは、特定の状態と動作を持つ論理エンティティです。
すべてのオブジェクトには、次の主な特徴があります。
- 身元: 一意のIDはオブジェクトIDを定義します。このIDは通常のユーザーには表示されませんが、内部的にJVMはこのIDを使用してオブジェクトを一意に識別します。
- 状態: オブジェクト内の現在のデータまたはオブジェクトの値を定義します。
- 動作: この機能は、オブジェクトの機能(動作)を表します。 例えば、 上で説明したVehicleオブジェクトには、開始、停止などの動作があります。
クラスを定義するときに、オブジェクト定義を再検討します。
では、クラスとは何ですか?
オブジェクト指向プログラミングの主要なコンポーネントはオブジェクトであることを私たちは知っています。特定のタイプのオブジェクトを作成する場合は、青写真が必要です。この青写真は、オブジェクトの作成に役立つ一連の手順を提供します。
例えば、 家を建てたいとしましょう。ここの家は物です。家を建てるには、家の最初の青写真が必要です。家を直接建てることはできません。
ここでクラスが登場します。したがって、オブジェクトまたは実際のエンティティを構築するには、最初に、オブジェクトのコンテンツと動作を決定する青写真を作成します。これは、オブジェクト指向プログラミングのクラスとして知られています。
したがって、クラスは「 ブループリントまたはテンプレートであり、オブジェクトの状態と動作を定義します 」。
クラスをオブジェクトのグループとして表示することもできます。このグループには、すべてのオブジェクトに共通するいくつかのプロパティがあります。
Javaでクラスを作成する方法を見てみましょう。
Javaでクラスを作成する方法
Javaのクラス定義の一般的なクラス構文は次のとおりです。
class extends implements interface_name> { //fields; //constructors //methods; //blocks }
クラスの上記の一般的な宣言は、クラス宣言の例とともに次の図に示されています。
クラス宣言のスーパークラスとインターフェイスはオプションであることに注意してください。別のスーパークラスから拡張したり、インターフェイスを実装したりせずに、スタンドアロンクラスを選択できます。
上記の一般的な定義は、クラス定義に存在できるコンポーネントも示しています。
クラスのコンポーネント
クラスのコンポーネントを以下に示します。
上の図に示すように、Javaクラスには次のコンポーネントが含まれています。
- 田畑
- メソッド
- コンストラクター
- ブロック
- ネストされたクラスとインターフェイス
次に、最初の3つのコンポーネントについて説明します。これらのコンポーネントは、どのクラスでも必要です。ネストされたクラスとインターフェイスはまったく別のトピックであり、後のチュートリアルで説明します。
クラスコンポーネントについて説明する前に、まずクラスCustomer_Accountを定義しましょう。
class Customer_Account { static String bank_name; //class variable long customer_accountNo; //instance variable String customer_name; //instance variable //constructor Customer_Account (long accountnum, String accName){ customer_accountNo = accountnum; customer_name = accName; } //method void printInfo(){ System.out.println ('Customer Account Details:'); System.out.println ('Customer Account Number: ' + customer_accountNo); System.out.println (' Customer Name: '+customer_name); } }
田畑
フィールドは、クラスの変数またはデータです。 Javaでは、フィールドはメンバー変数とも呼ばれます。フィールドと変数という用語は同じ意味で使用します。
通常、クラスのフィールドには次の2つのタイプがあります。
#1)クラス変数: クラス変数は「静的」という単語で宣言されているため、静的変数になります。つまり、このタイプの変数には、そのクラスに存在するインスタンスまたはオブジェクトの数に関係なく、クラスごとに1つのコピーしかありません。
#2)インスタンス変数: これらはクラス変数の反対です。データメンバーは、実行時にクラスインスタンスごとに個別のメモリが割り当てられるため、インスタンス変数と呼ばれます。
上記のクラス定義では、クラス変数とインスタンス変数の両方を示しています。静的修飾子で宣言された変数「bank_name」はクラス変数です。他の2つの変数「customer_accNo」と「customer_name」はインスタンス変数です。
ビルダー
コンストラクターは、クラスのインスタンスを初期化するために一般的に使用される特別なメソッドです。コンストラクターには戻り値の型がなく、クラスと同じ名前であり、パラメーターが含まれる場合と含まれない場合があります。
上記のクラス定義には、コンストラクターが1つあります。
Customer_Account (long accountnum, String accName)
コンストラクターについては、以降のチュートリアルで詳しく学習します。
方法
Javaクラスのメソッドは、オブジェクトとそのメンバーの動作を定義する関数です。
クラスメソッドは、プログラムで通常のメソッドを作成するのと同じ方法で作成されます。クラスメソッド内では、Javaが提供するすべての構造と機能を使用できます。
クラス定義の例では、クラスのさまざまなデータメンバーを表示する「printInfo」メソッドがあります。
Javaクラスのメソッドには通常、次のプロトタイプがあります。
method_name(parameter list…){ //code blocks }
クラスメソッドは、ドット演算子を使用してクラスインスタンスによってアクセスされます。したがって、上記のクラス「Customer_Account」のインスタンスaccを作成すると、以下のコード行を使用してprintInfoにアクセスできます。
acc.printInfo();
access_modifierが静的である場合、メソッドにアクセスするためのインスタンスは必要ありません。クラス名を直接使用して、次のようにメソッドにアクセスできます。
Custome_Account.printInfo ();
Javaクラスの例
Javaでクラスとオブジェクトを示す簡単な例を実装しましょう。
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
出力
上記のプログラムはStudentクラスを宣言します。これには、3つのインスタンス変数があります。 student_id、student_name、student_marks。
Windows10に最適なPCクリーナー
次に、Student_objectという名前のStudentクラスのオブジェクトを宣言するMainクラスを定義します。次に、ドット演算子を使用して、インスタンス変数にアクセスし、それらの値を出力します。
上記のプログラムは、クラス外のmainメソッドの例です。
以下の例では、クラス内にmainメソッドがあります。
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
出力
上記のプログラムは、mainメソッドがStudentクラス内にあることを除いて、前のプログラムと同じです。
Javaのオブジェクト
これで、Javaのクラスに関する十分な知識が得られたので、クラスの観点からオブジェクトを再定義できます。つまり、オブジェクトは「 クラスのインスタンス 」。したがって、class_name型の変数またはインスタンスを作成し、それをオブジェクトと呼びます。
オブジェクトについて覚えておくべきいくつかのポイント:
- オブジェクトは、クラスとともにOOPの基本単位と見なされます。
- オブジェクトはランタイムユニットです。
- オブジェクトは、クラスのインスタンスと呼ばれます。
- オブジェクトには動作と状態があります。
- オブジェクトは、それがインスタンスであるクラスのすべてのプロパティと属性を取ります。ただし、どの時点でも、各オブジェクトには異なる状態または変数値があります。
- オブジェクトは、ソフトウェアアプリケーションでリアルタイムエンティティを表すために使用されます。
- 1つのクラスに任意の数のオブジェクトを含めることができます。
- オブジェクトは、メソッドを呼び出すことによって相互に作用します。
オブジェクトをインスタンス化する方法
オブジェクトの宣言は、 オブジェクトのインスタンス化 Javaで。オブジェクトの宣言は、変数の宣言と同じです。
例えば、 上で宣言したCustomer_Accountクラスを使用して、オブジェクトを宣言できます。
したがって、Customer_Accountのオブジェクトを次のように宣言またはインスタンス化します。
Customer_Account account;
上記のステートメントは、Customer_Accountクラスの「account」という名前のオブジェクトを宣言またはインスタンス化します。
クラスのオブジェクトをインスタンス化する場合、そのクラスは厳密に「具象クラス」である必要があることに注意してください。抽象クラスのオブジェクトを宣言することはできません。
上記のステートメントは、オブジェクトを宣言するだけです。この変数を使用して、クラスのメソッドを呼び出したり、メンバー変数の値を設定したりすることはできません。これは、宣言されたオブジェクトにメモリを割り当てていないためです。
したがって、オブジェクトを適切に作成して、さらに使用する必要があります。
オブジェクトの実際の作成は、オブジェクトの初期化によって行われます。オブジェクトを宣言したら、それを初期化する必要があります。そうすれば、このオブジェクトを使用してクラスのメンバー変数とメソッドにアクセスできるのは私たちだけです。
オブジェクトを作成する方法
次のメソッドを使用して、Javaでオブジェクトを作成できます。
#1)新しいキーワードの使用
新しいキーワードを使用してオブジェクトを初期化できます。このメソッドは、新しいオブジェクトを作成するために最も一般的に使用されるメソッドです。
例えば、クラスABCが与えられると、次のように新しいクラスオブジェクトを作成できます。
ABC myObj = new ABC ();
上記のステートメントで、myObjはnew演算子を使用して作成された新しいオブジェクトです。このメソッドを使用して作成されたオブジェクトには、すべてのデータメンバーの初期値があります。 newキーワードに続くコンストラクタABC()は、クラスABCのデフォルトコンストラクタです。
また、パラメーターを使用してコンストラクターを定義し、そのコンストラクターをnewキーワードを使用して呼び出して、データメンバーの目的の値を使用してオブジェクトを作成することもできます。
#2)Class.forName()メソッドの使用
Javaは、システム内のクラスとオブジェクトに関するすべての情報を保持する「Class」という名前のクラスを提供します。 「Class」クラスのforName()メソッドを使用して、オブジェクトを作成できます。 forNameメソッドの引数として完全修飾クラス名を渡す必要があります。
次に、クラスのインスタンスを返すnewInstance()メソッドを呼び出すことができます。
次のコード行はこれを示しています。
ABC myObj = Class.forName (“com.myPackage.ABC”).newInstance();
上記のステートメントは、クラスABCの新しいオブジェクトmyObjを作成します。
#3)clone()メソッドによる
Javaのオブジェクトクラスは、clone()メソッドに引数として渡されたオブジェクトのクローンまたはコピーを返すclone()メソッドを提供します。
例えば、
ABC myobj1 = new ABC (); ABC testObj = (ABC) myobj1.clone ();
#4)逆シリアル化による
Javaは、保存されたファイルからオブジェクトを読み取るデシリアライズと呼ばれる手法を提供します。別のチュートリアルで逆シリアル化について学習します。
オブジェクトを初期化する方法
このセクションでは、Javaでオブジェクトを初期化する方法について説明します。初期化とは、クラスのデータメンバーに値を割り当てることです。以下に示すのは、Javaでオブジェクトを初期化するために使用されるメソッドの一部です。
#1)参照を介してオブジェクトを初期化する
作成された参照オブジェクトは、オブジェクトに値を格納するために使用されます。これは、代入演算子を使用するだけで実行できます。
参照を使用したオブジェクトの初期化は、以下のプログラムに示されています。
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //initialization of class members using reference student_object.student_id = 101; student_object.student_name = 'Elena'; student_object.student_marks = 89.93; //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
出力
上記のプログラムは、3つのメンバー変数を持つStudentクラスを宣言します。次に、mainメソッドで、newキーワードを使用してStudentクラスのオブジェクトを作成します。次に、プログラムに示されているように、オブジェクトの各メンバーフィールドにデータを割り当てます。
#2)メソッドによるオブジェクトの初期化
この例では、Studentクラスの2つのオブジェクトを作成し、insertRecordメソッドを呼び出してこれらのオブジェクトの値を初期化します。メソッドinsertRecordは、クラスStudentのメンバーメソッドです。
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; //method to initialize class data members void initialize_object(int id, String name, double marks) { student_id = id; student_name = name; student_marks = marks; } } class Main{ public static void main(String args()){ //create a Student object using new operator Student student_object = new Student(); //initialization of class members through method student_object.initialize_object(27, 'Stefan', 78.86); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
出力
#3)コンストラクタによるオブジェクトの初期化
コンストラクターを使用してオブジェクトを初期化することもできます。
コンストラクターの使用法を示すプログラムを以下に示します。
//declare a class with three data members class Student{ int student_id; String student_name; Double student_marks; //constructor for initialization Student(int id, String name, double marks) { student_id = id; student_name = name; student_marks = marks; } } class Main{ public static void main(String args()){ //create a Student object using new operator and initialize it with constructor Student student_object = new Student(27, 'Stefan', 78.86); //display data members of the class. System.out.println('Student Id:' + student_object.student_id); System.out.println('Student Name:' + student_object.student_name); System.out.println('Student Marks:' + student_object.student_marks); } }
出力
このプログラムでは、 `Studentクラスには、パラメーターを受け取り、それらをメンバー変数に割り当てるパラメーター化されたコンストラクターがあります。
Javaのクラス対オブジェクト
クラス | オブジェクト |
---|---|
クラスメンバーフィールドには値がありません。 | すべてのオブジェクトには、メンバーフィールドとそれに関連する値のコピーがあります。 |
クラスは、オブジェクト作成のテンプレートまたは青写真です。 | オブジェクトはクラスのインスタンスです。 |
クラスは、作成時にメモリを割り当てません。 | オブジェクトは、作成時にメモリが割り当てられます。 |
クラスは論理エンティティです。 | オブジェクトは物理エンティティです。 |
クラスは、classキーワードを使用して宣言されます。 | オブジェクトは、new、forName()。newInstance()、clone()メソッドを使用して作成されます。 |
クラスは同一のオブジェクトのグループです。例えば。クラスの動物()。 | オブジェクトは特定のエンティティです。例えば。動物犬=新しい動物(); |
クラスは一度だけ宣言できます。 | クラスには、任意の数のインスタンスまたはオブジェクトを含めることができます。 |
よくある質問
Q#1)クラスとオブジェクトの違いは何ですか?
回答: クラスは、オブジェクトの作成に使用されるテンプレートです。オブジェクトはクラスのインスタンスです。クラスは論理エンティティですが、オブジェクトは物理エンティティです。各オブジェクトには、すべてのメンバー変数が特定の値を持つ状態があります。クラスには状態がありません。
Q#2)Javaクラスには何が含まれていますか?
回答: オブジェクトを作成するためのテンプレートまたはブループリントとして機能するJavaクラスは、プロパティまたはフィールドと動作またはメソッドを定義します。
Q#3)なぜJavaでクラスを使用するのですか?
回答: クラスとオブジェクトを使用して、Javaで実際のアプリケーションをモデル化し、それらを効率的に解決できます。状態と動作を持つオブジェクトは実世界のエンティティを表し、クラスはその青写真として機能します。したがって、クラスをビルディングブロックとして使用することで、複雑なアプリケーションをモデル化できます。
Q#4)実際の例でクラスとオブジェクトを説明してください。
回答: 車をオブジェクトとすると、車はmake、color、engine、mileageなどの属性を持つことができます。また、start()、stop()、applybrakes()などのメソッドを持つこともできます。したがって、車をソフトウェアオブジェクトにモデル化できます。これで、車はマルティ、フィアットなどのさまざまなメーカーを持つことができます。
したがって、これらすべての車のモデルを表すために、定義されたすべての共通の属性とメソッドを含むクラステンプレートを作成して、このクラスをインスタンス化し、目的の車のオブジェクトを取得できるようにすることができます。
Javaでnullポインタ例外を回避する方法
したがって、実際のオブジェクトカーはJavaでオブジェクトに簡単に変換できます。
結論
このチュートリアルでは、Javaのクラスとオブジェクトの詳細を学びました。クラスとオブジェクトの定義について説明しました。チュートリアルには、クラスの定義、クラスのコンポーネント、およびプログラムでクラスを使用する方法の例に関する詳細な説明があります。
また、適切なプログラミング例を使用して、宣言、作成、初期化など、Javaのオブジェクトの詳細を学習しました。
クラスとオブジェクトの主な違いを調査しました。次のチュートリアルでは、クラスのタイプとクラス内のコンストラクターについて説明し、その後、他のトピックに進みます。
=> ここで簡単なJavaトレーニングシリーズに注意してください。