このページでは、Java のオブジェクトとクラスについて学びます。オブジェクト指向プログラミング手法では、オブジェクトとクラスを使用してプログラムを設計します。
Java のオブジェクトは論理エンティティであると同時に物理エンティティでもありますが、Java のクラスは論理エンティティのみです。
Javaのオブジェクトとは何ですか
状態と動作を持つエンティティは、椅子、自転車、マーカー、ペン、テーブル、車など、オブジェクトとして知られています。それは、物理的または論理的 (有形および無形) の場合があります。無形オブジェクトの例は銀行システムです。
オブジェクトには次の 3 つの特性があります。
たとえば、ペンはオブジェクトです。その名前はレイノルズです。色は白、状態として知られています。それは書くために使用されるので、書くことがその動作です。
オブジェクトはクラスのインスタンスです。 クラスは、オブジェクトの作成元となるテンプレートまたはブループリントです。したがって、オブジェクトはクラスのインスタンス(結果)です。
オブジェクトの定義:
- オブジェクトとは、 現実世界の実体 。
- オブジェクトとは、 ランタイムエンティティ 。
- オブジェクトは 状態と動作を持つエンティティ 。
- オブジェクトは クラスのインスタンス 。
Javaのクラスとは何ですか
クラスは、共通のプロパティを持つオブジェクトのグループです。これは、オブジェクトの作成元となるテンプレートまたはブループリントです。それは論理的な実体です。それは物理的なものではあり得ません。
Java のクラスには以下を含めることができます。
クラスを宣言する構文:
class { field; method; }
Javaのインスタンス変数
クラス内でメソッドの外に作成される変数は、インスタンス変数と呼ばれます。インスタンス変数はコンパイル時にメモリを取得しません。オブジェクトまたはインスタンスが作成される実行時にメモリを取得します。このため、インスタンス変数と呼ばれます。
Javaのメソッド
Java では、メソッドはオブジェクトの動作を公開するために使用される関数に似ています。
手法の利点
- コードの再利用性
- コードの最適化
Javaの新しいキーワード
new キーワードは、実行時にメモリを割り当てるために使用されます。すべてのオブジェクトはヒープ メモリ領域にメモリを取得します。
オブジェクトとクラスの例: クラス内の main
この例では、2 つのデータ メンバー ID と名前を持つ Student クラスを作成しました。 new キーワードによって Student クラスのオブジェクトを作成し、オブジェクトの値を出力しています。
ここでは、クラス内に main() メソッドを作成しています。
ファイル: Student.java
//Java Program to illustrate how to define a class and fields //Defining a Student class. class Student{ //defining fields int id;//field or data member or instance variable String name; //creating main method inside the Student class public static void main(String args[]){ //Creating an object or instance Student s1=new Student();//creating an object of Student //Printing values of the object System.out.println(s1.id);//accessing member through reference variable System.out.println(s1.name); } }今すぐテストしてください
出力:
0 null
オブジェクトとクラスの例: クラス外の main
リアルタイム開発ではクラスを作成し、それを別のクラスから利用します。以前のものよりも優れたアプローチです。別のクラスに main() メソッドがある簡単な例を見てみましょう。
Javaの数学的手法
異なる Java ファイルまたは単一の Java ファイルに複数のクラスを含めることができます。一つのJavaソースファイル内に複数のクラスを定義する場合は、main()メソッドを持つクラス名をファイル名として保存すると良いでしょう。
ファイル: TestStudent1.java
//Java Program to demonstrate having the main method in //another class //Creating Student class. class Student{ int id; String name; } //Creating another class TestStudent1 which contains the main method class TestStudent1{ public static void main(String args[]){ Student s1=new Student(); System.out.println(s1.id); System.out.println(s1.name); } }今すぐテストしてください
出力:
0 null
オブジェクトを初期化する 3 つの方法
Java でオブジェクトを初期化するには 3 つの方法があります。
- 参照変数による
- 方法別
- コンストラクター別
1) オブジェクトとクラスの例: 参照による初期化
オブジェクトの初期化とは、オブジェクトにデータを格納することを意味します。参照変数を通じてオブジェクトを初期化する簡単な例を見てみましょう。
ファイル: TestStudent2.java
class Student{ int id; String name; } class TestStudent2{ public static void main(String args[]){ Student s1=new Student(); s1.id=101; s1.name='Sonoo'; System.out.println(s1.id+' '+s1.name);//printing members with a white space } }今すぐテストしてください
出力:
101 Sonoo
複数のオブジェクトを作成し、参照変数を通じてそこに情報を保存することもできます。
ファイル: TestStudent3.java
class Student{ int id; String name; } class TestStudent3{ public static void main(String args[]){ //Creating objects Student s1=new Student(); Student s2=new Student(); //Initializing objects s1.id=101; s1.name='Sonoo'; s2.id=102; s2.name='Amit'; //Printing data System.out.println(s1.id+' '+s1.name); System.out.println(s2.id+' '+s2.name); } }今すぐテストしてください
出力:
101 Sonoo 102 Amit
2) オブジェクトとクラスの例: メソッドによる初期化
この例では、Student クラスの 2 つのオブジェクトを作成し、insertRecord メソッドを呼び出してこれらのオブジェクトの値を初期化しています。ここでは、displayInformation() メソッドを呼び出してオブジェクトの状態 (データ) を表示しています。
ファイル: TestStudent4.java
class Student{ int rollno; String name; void insertRecord(int r, String n){ rollno=r; name=n; } void displayInformation(){System.out.println(rollno+' '+name);} } class TestStudent4{ public static void main(String args[]){ Student s1=new Student(); Student s2=new Student(); s1.insertRecord(111,'Karan'); s2.insertRecord(222,'Aryan'); s1.displayInformation(); s2.displayInformation(); } }今すぐテストしてください
出力:
111 Karan 222 Aryan
上の図からわかるように、オブジェクトはヒープ メモリ領域のメモリを取得します。参照変数は、ヒープメモリ領域に割り当てられたオブジェクトを参照します。ここで、s1 と s2 は両方とも、メモリに割り当てられたオブジェクトを参照する参照変数です。
3) オブジェクトとクラスの例: コンストラクターによる初期化
Java のコンストラクターについては後ほど学習します。
オブジェクトとクラスの例: 従業員
従業員の記録を管理する例を見てみましょう。
ファイル: TestEmployee.java
Javaハッシュマップ
class Employee{ int id; String name; float salary; void insert(int i, String n, float s) { id=i; name=n; salary=s; } void display(){System.out.println(id+' '+name+' '+salary);} } public class TestEmployee { public static void main(String[] args) { Employee e1=new Employee(); Employee e2=new Employee(); Employee e3=new Employee(); e1.insert(101,'ajeet',45000); e2.insert(102,'irfan',25000); e3.insert(103,'nakul',55000); e1.display(); e2.display(); e3.display(); } }今すぐテストしてください
出力:
101 ajeet 45000.0 102 irfan 25000.0 103 nakul 55000.0
オブジェクトとクラスの例: Rectangle
Rectangle クラスのレコードを保持する別の例を示します。
ファイル: TestRectangle1.java
class Rectangle{ int length; int width; void insert(int l, int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle1{ public static void main(String args[]){ Rectangle r1=new Rectangle(); Rectangle r2=new Rectangle(); r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } }今すぐテストしてください
出力:
55 45
Java でオブジェクトを作成するさまざまな方法には何がありますか?
Java でオブジェクトを作成する方法はたくさんあります。彼らです:
- 新しいキーワードで
- newInstance() メソッドによる
- clone() メソッドによる
- 逆シリアル化により
- 工場製法などにより
オブジェクトを作成するこれらの方法は後で学習します。
匿名オブジェクト
アノニマスとは単に「無名」という意味です。参照を持たないオブジェクトは匿名オブジェクトと呼ばれます。オブジェクト作成時のみ使用可能です。
オブジェクトを 1 回だけ使用する必要がある場合は、匿名オブジェクトを使用するのが良い方法です。例えば:
new Calculation();//anonymous object
参照を介してメソッドを呼び出す:
Calculation c=new Calculation(); c.fact(5);
匿名オブジェクトを介したメソッドの呼び出し
new Calculation().fact(5);
Java の匿名オブジェクトの完全な例を見てみましょう。
class Calculation{ void fact(int n){ int fact=1; for(int i=1;i<=n;i++){ fact="fact*i;" } system.out.println('factorial is '+fact); public static void main(string args[]){ new calculation().fact(5); calling method with anonymous object < pre> <p>Output:</p> <pre> Factorial is 120 </pre> <a id="objectbyonetype"></a> <h3>Creating multiple objects by one type only</h3> <p>We can create multiple objects by one type only as we do in case of primitives.</p> <p>Initialization of primitive variables:</p> <pre> int a=10, b=20; </pre> <p>Initialization of refernce variables:</p> <pre> Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects </pre> <p>Let's see the example:</p> <pre> //Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } } </pre> <span> Test it Now </span> <p>Output:</p> <pre> 55 45 </pre> <h3>Real World Example: Account</h3> <p>File: TestAccount.java</p> <pre> //Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println('insufficient balance'); }else{ amount="amount-amt;" system.out.println(amt+' withdrawn'); } method to check the balance of account void checkbalance(){system.out.println('balance is: '+amount);} display values an object display(){system.out.println(acc_no+' '+name+' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,'ankit',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){></pre></=n;i++){>
1 種類だけで複数のオブジェクトを作成する
プリミティブの場合と同様に、1 つのタイプのみで複数のオブジェクトを作成できます。
プリミティブ変数の初期化:
int a=10, b=20;
参照変数の初期化:
Rectangle r1=new Rectangle(), r2=new Rectangle();//creating two objects
例を見てみましょう:
//Java Program to illustrate the use of Rectangle class which //has length and width data members class Rectangle{ int length; int width; void insert(int l,int w){ length=l; width=w; } void calculateArea(){System.out.println(length*width);} } class TestRectangle2{ public static void main(String args[]){ Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects r1.insert(11,5); r2.insert(3,15); r1.calculateArea(); r2.calculateArea(); } }今すぐテストしてください
出力:
55 45
現実世界の例: アカウント
ファイル: TestAccount.java
//Java Program to demonstrate the working of a banking-system //where we deposit and withdraw amount from our account. //Creating an Account class which has deposit() and withdraw() methods class Account{ int acc_no; String name; float amount; //Method to initialize object void insert(int a,String n,float amt){ acc_no=a; name=n; amount=amt; } //deposit method void deposit(float amt){ amount=amount+amt; System.out.println(amt+' deposited'); } //withdraw method void withdraw(float amt){ if(amount <amt){ system.out.println(\'insufficient balance\'); }else{ amount="amount-amt;" system.out.println(amt+\' withdrawn\'); } method to check the balance of account void checkbalance(){system.out.println(\'balance is: \'+amount);} display values an object display(){system.out.println(acc_no+\' \'+name+\' creating a test class deposit and withdraw testaccount{ public static main(string[] args){ a1="new" account(); a1.insert(832345,\'ankit\',1000); a1.display(); a1.checkbalance(); a1.deposit(40000); a1.withdraw(15000); }} < pre> <span> Test it Now </span> <p>Output:</p> <pre> 832345 Ankit 1000.0 Balance is: 1000.0 40000.0 deposited Balance is: 41000.0 15000.0 withdrawn Balance is: 26000.0 </pre></amt){>=n;i++){>