LoginSignup
2
0

More than 1 year has passed since last update.

クラスとインスタンスについての覚書 (JavaScript)

Last updated at Posted at 2023-03-29

■クラスとは

オブジェクトを作成するための設計図のようなものです。クラスは、オブジェクトの特性(属性)や機能(メソッド)を定義します。クラス自体はオブジェクトではありませんが、オブジェクトを作成するためのテンプレートのようなものです。

■インスタンスとは

クラスから作成されたオブジェクトのことです。インスタンスは、クラスで定義された属性とメソッドを持ちます。クラスから作成された複数のインスタンスは、それぞれ独自の属性を持ちます。

  • JavaScriptでは、クラスとインスタンスは以下のように定義されます。

クラスの定義:

class MyClass {
  constructor(param1, param2) {
    this.property1 = param1;
    this.property2 = param2;
  }

  myMethod() {
    console.log("Hello World!");
  }
}

上記のコードでは、MyClassという名前のクラスを定義しています。constructor関数は、クラスをインスタンス化する際に呼び出され、新しいインスタンスにプロパティを追加します。myMethod()は、クラスに属するメソッドを定義します。

インスタンスの生成:

const myinstance = new MyClass("価値1", "価値2");

上記のコードでは、MyClassクラスからmyInstanceという名前のインスタンスを作成しています。constructor関数の引数は、プロパティに渡されます。

インスタンスのプロパティやメソッドの呼び出し:

console.log(myInstance.property1); // "価値1"
console.log(myInstance.property2); // "価値2"
myInstance.myMethod(); // "Hello World!"

上記のコードでは、myinstanceというインスタンスのプロパティとメソッドにアクセスしています。property1property2は、constructor関数で定義されたプロパティです。myMethod()は、クラスに属するメソッドです。

※クラスは大文字、インスタンスは小文字から定義するのが通例です

※constructor関数について

constructor関数は、JavaScriptにおいて、クラスを定義するための特別なメソッドの一つです。この関数は、クラスがインスタンス化されたときに実行され、インスタンスに初期値を与えるために使用されます。

以下は、constructor関数を使用してクラスを定義し、インスタンスを生成する例です。

// Rectangleクラスを定義する
class Rectangle {
  // コンストラクタ関数を定義する
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }

  // 面積を計算するメソッドを定義する
  getArea() {
    return this.width * this.height;
  }
}

// Rectangleクラスからインスタンスを生成する
const rect = new Rectangle(10, 20);

// 面積を出力する
console.log(rect.getArea()); // 結果: 200

上記の例では、Rectangleクラスを定義しています。このクラスには、constructor関数が定義されています。この関数は、widthheightの2つの引数を受け取り、それらを使用してインスタンスにwidthheightの値を設定します。また、Rectangleクラスには、getAreaメソッドがあり、このメソッドはインスタンスのwidthheightの値を使用して、面積を計算します。

次に、newキーワードを使用して、Rectangleクラスからrectという名前のインスタンスを生成します。これにより、widthが10、heightが20の新しいRectangleオブジェクトが作成されます。

最後に、インスタンスのgetAreaメソッドを呼び出して、面積を出力します。

constructor関数は、クラス内に初期化処理を書くための便利な方法です。
この関数を使用することで、インスタンスを生成するたびに同じ初期化処理を書く必要がなくなり、コードを簡潔に保つことができます。
また、constructor関数は、クラスを継承する際にも重要な役割を果たします。継承したクラスでも、親クラスのconstructor関数を呼び出すことで、親クラスと同じ初期化処理を実行することができます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0