Javaでクラスを作成する方法を学ぶ

Javaでのクラスの作成は、オブジェクト指向プログラミングと呼ばれるものの基本的なコンポーネントです。オブジェクト指向プログラミングは、相互にメッセージを送信できるオブジェクトの使用に基づくパラダイム(プログラミングのスタイル)です。

Javaでクラスを使用する方法を完全に理解するには、最初にオブジェクトとは何かを理解する必要があります。

オブジェクトの探索

Javaでは、オブジェクトという用語はクラスという用語と同じ意味で使用されることがよくあります。これは、オブジェクトがクラスから作成されていることを考えると理解できます。

クラスは青写真と考えることができるため、オブジェクトを作成するために必要なすべての情報が含まれています。

たとえば、名前、年齢、学習コースなど、学生に関する基本情報を含む学生クラスを作成できます。学生クラスを使用して新しい学生が作成されるたびに、その学生はオブジェクトと呼ばれます。

Javaでクラスを作成する

Javaでクラスを作成する必要があるのは、クラスがプログラム構造を提供し、プログラムに存在するコードの量を減らすためです。プログラム内の同様のオブジェクトごとに新しい状態と動作を作成する代わりに、そのオブジェクトを作成するためのテンプレートを持つクラスを呼び出すだけです。

Javaクラスでは、最も重要なステートメントの1つはクラス宣言です。

クラス宣言

原則として、Javaのすべてのクラスは、キーワード「public」を使用して宣言されます。これは、問題のクラスがJavaプログラムの他のクラスからアクセスできることを示します。 「class」キーワードはこれに続き、作成しているJavaステートメントがクラスであることを示すのに役立ちます。

次はクラス名です。これは通常大文字で始まり、作成するオブジェクトに適していると思われる任意の名前にすることができます。以下の例では、クラスの名前はstudentです。これは、このクラスからstudentオブジェクトを作成することを目的としているためです。

Javaでのクラス宣言の例

public class Student {
}

クラス宣言の最後のコンポーネントは、中括弧の開閉です。最初の中括弧はクラスの開始を示し、2番目の中括弧はクラスの終了を示します。したがって、クラスに固有のすべての状態と動作は、これらの中括弧の間に格納されます。

中括弧を使用すると、Javaコードに構造を追加するのに役立ちます。 Pythonなどの他の言語では、クラスを作成するときに中括弧を使用してコードを構造化しないため、この機能を当然のことと見なしてはなりません。

関連: Pythonで単純なクラスを作成する方法

Javaクラス属性

属性は、Javaクラスの構成要素と見なすことができます。これらには、オブジェクトに状態を与えるために使用されるデータ要素が含まれており、変数と呼ばれることがよくあります。

私たちのクラスは「学生」と呼ばれ、特定の大学に属する学生の情報を保存することに焦点を当てています。したがって、ファイルにある情報は、各学生の名前、年齢、および学習コースである可能性があります。

属性を持つクラスの例

public class Student {
//variable declaration
private String fname;
private String lname;
private int age;
private String courseOfStudy;
}

上記のプログラムで注意すべき重要なことがいくつかあります。 Javaで属性/変数を宣言するときは、アクセス修飾子、データ型、および変数名が必要です。

私たちのプログラムでは、アクセス修飾子はキーワード「private」であり、学生クラスのデータへの外部アクセスを防ぐために使用されます。これは、クラスに格納されているデータの整合性を保護するため、優れたプログラミング手法です。 。

プログラムには、Stringとintという2つの異なるデータ型の表現があります。

  • Stringキーワードは、テキストデータを格納する変数を宣言するために使用され、Javaコンパイラによって認識されるためには大文字の「S」で始まる必要があります。
  • 「int」キーワードは、整数データを格納する属性を宣言するために使用されます。Javaプログラミング言語では大文字と小文字が区別されるため、すべて小文字にする必要があります。

変数の名前は通常、属性/変数宣言の最後の部分です。ただし、変数の値は、宣言段階で変数に割り当てることができます。すべての変数が宣言されたら、コンストラクターの作成に移ることができます。

Javaコンストラクタ

Javaのクラスはコンストラクタなしでは完全ではありません— それは言語のコアコンセプトです。コンストラクターは、オブジェクトに状態を与えるために使用されるJavaのメソッドであり、オブジェクトが作成されるときに自動的に呼び出されます。現在、コンストラクターには、default、primary、およびcopyの3つのタイプがあります。

クラスからオブジェクトを作成する場合、パラメーター(メソッドに渡すことができる値)と呼ばれるものをオブジェクトに提供するか、パラメーターなしで作成するかを選択できます。

新しいオブジェクトがクラスから作成され、パラメーターが指定されていない場合、デフォルトのコンストラクターが呼び出されます。ただし、パラメーターが指定されている場合は、プライマリコンストラクターが呼び出されます。

デフォルトのコンストラクタを持つクラスの例

public class Student {
//variable declaration
private String fname;
private String lname;
private int age;
private String courseOfStudy;
//default constructor
public Student() {
fname = "John";
lname = "Doe";
age = 20;
courseOfStudy = "Pyschology";
}
}

上記のコードでは、デフォルトのコンストラクターに「public」アクセス修飾子が割り当てられています。これにより、学生クラスの外部からアクセスできるようになります。コンストラクタアクセス修飾子は「パブリック」である必要があります。そうでない場合、クラスは他のクラスを使用してオブジェクトを作成できません。

コンストラクターには、それらが属するクラスの名前が常に割り当てられます。デフォルトのコンストラクターの場合、上記のコードに示されているように、クラス名の後に括弧が続きます。括弧の後には、クラスに属する変数のデフォルトの割り当てを含む中括弧を開いたり閉じたりする必要があります。

上記のコード例から、パラメーターなしで学生クラスのインスタンスが作成されるたびに、デフォルトコンストラクターが呼び出され、John Doeという名前の学生(20歳)と心理学コースが作成されます。

プライマリコンストラクタを持つクラスの例

public class Student {
//variable declaration
private String fname;
private String lname;
private int age;
private String courseOfStudy;
//default constructor
public Student() {
fname = "John";
lname = "Doe";
age = 0;
courseOfStudy = "Pyschology";
}
//primary constructor
public Student(String fname, String lname, int age, String courseOfStudy) {
this.fname = fname;
this.lname = lname;
this.age = age;
this.courseOfStudy = courseOfStudy;
}
}

デフォルトコンストラクターとプライマリコンストラクターの主な違いは、プライマリコンストラクターは引数を取りますが、デフォルトコンストラクターは取りません。学生クラスのプライマリコンストラクターを使用するには、作成する学生オブジェクトの名前、年齢、および学習コースを指定する必要があります。

プライマリコンストラクタでは、パラメータとして受信された各データ属性値が適切な変数に格納されます。 「this」キーワードは、それらが接続されている変数が学生クラスに属していることを示すために使用され、他の変数は、クラスのオブジェクトがプライマリコンストラクターを使用して作成されたときにパラメーターとして受け取られるものです。

コピーコンストラクターはプライマリコンストラクターのコピーであり、Javaプログラムを正常に実行するために必要ではありません。したがって、それを含める必要はありません。

これで、Javaで単純なクラスを作成できます

この記事では、Javaプログラミング言語で有用なクラスを作成する方法だけでなく、オブジェクト指向プログラミングのいくつかの基礎についても説明します。これには、変数の作成、「Sting」および「int」データ型の調査、Javaのパブリックおよびプライベートアクセス修飾子の理解が含まれます。

画像クレジット:Christina Morillo / Pexels