Java のクラスとオブジェクト

Java のクラスとオブジェクト

Java では、クラスとオブジェクトがオブジェクト指向プログラミング (OOP) の基礎を形成します。これらは、現実世界のエンティティをモデル化し、構造化された方法でコードを整理するのに役立ちます。

  • クラスは、共通のプロパティと動作を共有するオブジェクトを作成するために使用される設計図です。
  • オブジェクトはクラスのインスタンスです。これは、クラス テンプレートから作成された特定のエンティティを表します。

たとえば、Dog はクラスです。Tommy はそのクラスのオブジェクトです。

クラスオブジェクトの例クラスとオブジェクト (ここでは Dog がクラス、Bobby がオブジェクトです)

Javaクラス

クラスは、オブジェクトのデータと動作を定義する設計図です。関連するフィールドとメソッドを 1 つのユニットにグループ化します。そのメンバーのメモリは、オブジェクトの作成時にのみ割り当てられます。

  • 共有構造を持つオブジェクトを作成するためのテンプレートとして機能します。
  • インスタンス化されるまでフィールドのメモリを占有しません。
  • フィールド、メソッド、コンストラクター、ネストされたクラスおよびインターフェイスを含めることができます。
Java
   class   Student     {      int     id  ;      String     n  ;      public     Student  (  int     id       String     n  )     {      this  .  id     =     id  ;      this  .  n     =     n  ;      }   }   public     class   Main     {      public     static     void     main  (  String  []     args  )     {      Student     s1     =     new     Student  (  10       'Alice'  );      System  .  out  .  println  (  s1  .  id  );      System  .  out  .  println  (  s1  .  n  );      }   }   

出力
10 Alice  

Javaオブジェクト

オブジェクトは、そのデータと操作にアクセスするために作成されたクラスのインスタンスです。各オブジェクトは独自の状態を保持します。

  • : フィールドに格納された値。
  • 行動 : メソッドを通じて定義されたアクション。
  • 身元 : あるオブジェクトを別のオブジェクトから区別します。

オブジェクトは、顧客の製品やサークルなどの現実世界のアイテムを反映します。非プリミティブ オブジェクトはヒープに格納されますが、その参照はスタック上に残ります。

Java のオブジェクトJava オブジェクト (犬の例)

オブジェクトのインスタンス化

オブジェクトの作成はインスタンス化として知られています。クラスのすべてのインスタンスは、異なる状態値を格納しながら構造と動作を共有します。

Java でのオブジェクトの宣言Javaオブジェクト宣言

宣言:

犬のタフィー。

これは参照を宣言するだけです。オブジェクトは作成されず、参照は null を保持します。

初期化:

tuffy = new Dog('Tuffy' 'Papillon' 5 'White');

Java のクラスとオブジェクト-3-768初期化

new 演算子はメモリを割り当て、コンストラクターを呼び出します。

例: クラスの定義と使用

Java
   public     class   Dog     {      String     name  ;      String     breed  ;      int     age  ;      String     color  ;      public     Dog  (  String     name       String     breed       int     age       String     color  )     {      this  .  name     =     name  ;      this  .  breed     =     breed  ;      this  .  age     =     age  ;      this  .  color     =     color  ;      }      public     String     getName  ()     {     return     name  ;     }      public     String     getBreed  ()     {     return     breed  ;     }      public     int     getAge  ()     {     return     age  ;     }      public     String     getColor  ()     {     return     color  ;     }      @Override      public     String     toString  ()     {      return     'Name is: '     +     name      +     'nBreed age and color are: '      +     breed     +     ' '     +     age     +     ' '     +     color  ;      }      public     static     void     main  (  String  []     args  )     {      Dog     tuffy     =     new     Dog  (  'tuffy'       'papillon'       5       'white'  );      System  .  out  .  println  (  tuffy  );      }   }   

出力
Name is: tuffy Breed age and color are: papillon 5 white  

注記: すべてのクラスには少なくとも 1 つのコンストラクターがあります。何も定義されていない場合、Java は親コンストラクターを呼び出すデフォルトの引数なしのコンストラクターを提供します。

メソッド/関数を使用してオブジェクトを初期化する

Java
   public     class   Geeks     {      static     String     name  ;      static     float     price  ;      static     void     set  (  String     n       float     p  )     {      name     =     n  ;      price     =     p  ;      }      static     void     get  ()     {      System  .  out  .  println  (  'Software name is: '     +     name  );      System  .  out  .  println  (  'Software price is: '     +     price  );      }      public     static     void     main  (  String  []     args  )     {      Geeks  .  set  (  'Visual Studio'       0.0f  );      Geeks  .  get  ();      }   }   

出力
Software name is: Visual Studio Software price is: 0.0  

Java でオブジェクトを作成する方法

Java は 4 つの標準的なアプローチをサポートしています。

1. 新しいキーワードの使用

オブジェクトを作成する最も直接的な方法。

Java
   // creating object of class Test    Test     t     =     new     Test  ();   

2. リフレクションの使用

Spring などのフレームワークで見られる動的クラスの読み込みに使用されます。

Java
   class   Student     {      public     Student  ()     {}   }   public     class   Main     {      public     static     void     main  (  String  []     args  )     {      try     {      Class        c     =     Class  .  forName  (  'Student'  );      Student     s     =     (  Student  )     c  .  getDeclaredConstructor  ().  newInstance  ();      System  .  out  .  println  (  s  );      }     catch     (  Exception     e  )     {      e  .  printStackTrace  ();      }      }   }   

出力
Student@1dbd16a6  

3. clone() メソッドの使用

clone() は既存のオブジェクトのコピーを作成します。クラスは Cloneable を実装する必要があります。

Java
   class   Geeks     implements     Cloneable     {      String     name     =     'GeeksForGeeks'  ;      @Override      protected     Object     clone  ()     throws     CloneNotSupportedException     {      return     super  .  clone  ();      }      public     static     void     main  (  String  []     args  )     {      try     {      Geeks     g1     =     new     Geeks  ();      Geeks     g2     =     (  Geeks  )     g1  .  clone  ();      System  .  out  .  println  (  g2  .  name  );      }     catch     (  Exception     e  )     {      e  .  printStackTrace  ();      }      }   }   

出力
GeeksForGeeks  

4. デシリアライゼーションの使用

逆シリアル化は、ファイルに保存された状態からオブジェクトを読み取る技術です。オブジェクトは保存されたバイト ストリームから再作成されます。

参照 Java でのシリアル化/逆シリアル化

Java
   import     java.io.*  ;   class   Student     implements     Serializable     {      private     String     name  ;      public     Student  (  String     name  )     {     this  .  name     =     name  ;     }      public     String     toString  ()     {     return     'Student: '     +     name  ;     }   }   public     class   Main     {      public     static     void     main  (  String  []     args  )     {      try     (  ObjectOutputStream     out     =      new     ObjectOutputStream  (  new     FileOutputStream  (  'student.ser'  )))     {      out  .  writeObject  (  new     Student  (  'Alice'  ));      }     catch     (  IOException     e  )     {     e  .  printStackTrace  ();     }      try     (  ObjectInputStream     in     =      new     ObjectInputStream  (  new     FileInputStream  (  'student.ser'  )))     {      Student     s     =     (  Student  )     in  .  readObject  ();      System  .  out  .  println  (  s  );      }     catch     (  Exception     e  )     {     e  .  printStackTrace  ();     }      }   }   

出力
Student: Alice  

単一の参照は、異なる時点で異なるオブジェクトを指すことができます。

Java
   Test     test     =     new     Test  ();   test     =     new     Test  ();   

継承では、子オブジェクトの親参照を使用するのが一般的です。

Java
   Animal     obj     =     new     Dog  ();   obj     =     new     Cat  ();   

参照されていないオブジェクトはガベージ コレクションの対象になります。

匿名オブジェクト

匿名オブジェクトは参照なしで作成され、1 回限りの操作にすぐに使用されます。

  • 参照変数がありません: オブジェクトを再利用できません。
  • 作成してすぐに使用すると、短期間のタスク用にメモリが節約されます。
  • イベント処理 (ボタンのクリックなど) で一般的です。
Java
   new     Dog  (  'Max'       'Labrador'       3       'Black'  ).  getName  ();   

UI イベント処理で一般的です。

クイズの作成