工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

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

Java はオブジェクト指向言語です。オブジェクト指向機能を持つ言語として、Java は次の基本的な概念をサポートします −

この章では、クラスとオブジェクトという概念について説明します。

Java のオブジェクト

オブジェクトとは何かを深く見てみましょう。現実世界を考えると、車、犬、人間など、私たちの周りには多くの物体があります。これらの物体はすべて、状態と動作を持っています。

犬を例にとると、その状態は名前、品種、色、行動は吠える、尻尾を振る、走るなどです。

ソフトウェア オブジェクトを現実世界のオブジェクトと比較すると、非常によく似た特徴があります。

ソフトウェア オブジェクトにも状態と動作があります。ソフトウェア オブジェクトの状態はフィールドに格納され、動作はメソッドを介して表示されます。

したがって、ソフトウェア開発では、メソッドはオブジェクトの内部状態で動作し、オブジェクト間の通信はメソッドを介して行われます。

Java のクラス

クラスは、個々のオブジェクトが作成される青写真です。

以下はクラスのサンプルです。

public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}

クラスには、次の変数タイプのいずれかを含めることができます。

クラスは、さまざまな種類のメソッドの値にアクセスするためのメソッドをいくつでも持つことができます。上記の例では、barking()、hungry()、sleep() がメソッドです。

以下は、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 つのステップがあります −

以下は、オブジェクトを作成する例です −

ライブデモ
public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

上記のプログラムをコンパイルして実行すると、次の結果が生成されます-

出力

Passed Name is :tommy

インスタンス変数とメソッドへのアクセス

インスタンス変数とメソッドは、作成されたオブジェクトを介してアクセスされます。インスタンス変数にアクセスするには、完全修飾パスを次に示します-

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName();

この例では、クラスのインスタンス変数とメソッドにアクセスする方法を説明します。

ライブデモ
public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}

上記のプログラムをコンパイルして実行すると、次の結果が生成されます-

出力

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

ソース ファイルの宣言規則

このセクションの最後の部分として、ソース ファイルの宣言規則を見てみましょう。クラス、import を宣言するとき、これらの規則は不可欠です。 ステートメントとパッケージ ソース ファイル内のステートメント。

クラスにはいくつかのアクセス レベルがあり、さまざまな種類のクラスがあります。抽象クラス、最終クラスなど。これらすべてについては、アクセス修飾子の章で説明します。

上記の種類のクラスとは別に、Java には内部クラスと匿名クラスと呼ばれる特別なクラスもあります。

Java パッケージ

簡単に言えば、クラスとインターフェースを分類する方法です。 Java でアプリケーションを開発する場合、何百ものクラスとインターフェースが作成されるため、これらのクラスを分類することは必須であり、作業がずっと楽になります。

インポートステートメント

Java では、パッケージとクラス名を含む完全修飾名が指定されている場合、コンパイラはソース コードまたはクラスを簡単に見つけることができます。 import ステートメントは、コンパイラが特定のクラスを見つけるための適切な場所を提供する方法です。

たとえば、次の行は、ディレクトリ java_installation/java/io で利用可能なすべてのクラスをロードするようにコンパイラに要求します −

import java.io.*;

簡単なケーススタディ

このケース スタディでは、2 つのクラスを作成します。 Employee と EmployeeTest です。

最初にメモ帳を開き、次のコードを追加します。これは Employee クラスであり、このクラスは public クラスであることを思い出してください。次に、このソース ファイルを Employee.java という名前で保存します。

Employee クラスには、名前、年齢、役職、給与の 4 つのインスタンス変数があります。このクラスには、パラメーターを受け取る明示的に定義されたコンストラクターが 1 つあります。

import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable	salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

このチュートリアルで前述したように、処理は main メソッドから開始されます。したがって、この Employee クラスを実行するには、main メソッドとオブジェクトを作成する必要があります。これらのタスク用に別のクラスを作成します。

以下は EmployeeTest です クラス Employee の 2 つのインスタンスを作成し、各オブジェクトのメソッドを呼び出して各変数に値を割り当てます。

次のコードを EmployeeTest.java ファイルに保存します。

import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

両方のクラスをコンパイルして、EmployeeTest を実行します。 次のように結果を確認するには −

出力

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

次は?

次のセッションでは、Java の基本的なデータ型と、Java アプリケーションの開発時にそれらを使用する方法について説明します。


Java

  1. C# クラスとオブジェクト
  2. C++ クラスとオブジェクト
  3. C++ フレンド関数とフレンド クラス
  4. Java 変数とリテラル
  5. Java クラスとオブジェクト
  6. Java 最終キーワード
  7. オペレーターの Java インスタンス
  8. Java 抽象クラスと抽象メソッド
  9. Java のネストされた内部クラス
  10. Java匿名クラス
  11. Java シングルトン クラス