【Amazon】人気の商品が日替わりで登場!
毎日お得なタイムセール!商品をみる

【JavaScript】クラス(class)の書き方・使い方をマスターしよう!

本記事ではJavaScriptのクラスの書き方・使い方について解説しています。

クラスは多くのプログラミング言語で使われていたのですが、JavaScriptでは導入されておらず使用することができませんでした。しかしES6からクラスが導入されたので、他のプログラミングを使っていた人もJavaScriptで開発がしやすくなりました。

また、JavaScriptだけ触ってきた人もクラスの使い方を覚えることで他のプログラミング言語を学習する際に理解のスピードが格段に上がるので頑張って習得しましょう!

JavaScriptの学習におすすめ書籍
1冊ですべて身につくJavaScript入門講座
総合評価
( 5 )
メリット
  • 誰でも分かるように嚙み砕いて説明してくれる
  • アニメーションの知識が深く学べる
  • 1つのWebサイトを作りながら学べる
楽天ブックス
¥2,794 (2024/04/21 02:09時点 | 楽天市場調べ)
\楽天ポイント5倍セール!/
楽天市場で探す
\ポイント5%還元!/
Yahoo!ショッピングで探す
先輩くん

Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!

後輩ちゃん

初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

全プログラマー必見!
変数名/関数名にもう悩まない!
リーダブルコード
総合評価
( 5 )
メリット
  • 美しいコードが書けるが自然と書けるようになる
  • 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場で探す
\ポイント5%還元!/
Yahoo!ショッピングで探す
目次

クラスの書き方

クラス宣言

クラスを使うためには関数と同じように宣言する必要があります。クラスを宣言する時の書き方は以下のとおりです。

class クラス名{
  /* 後に追加していきます */
}

クラス名は関数などと混ざらないように基本的に頭文字を大文字にします。例えば人の情報を扱うクラス(user)の場合はclass Userにします。

constructorで初期値を設定

constructorはインスタンス化(new クラス名();)した時に渡された値を引数に受け取り、その値を初期値として設定します。このconstructorはデフォルトで用意されているメソッドでクラス内で使用することができます。

class Animal{
  constructor(name,height,weight){
    this.name = name;
    this.height = height;
    this.weight = weight;
  }
}

インスタンスの生成

constructorで初期値を設定したら、インスタンスを生成して初期値を渡しましょう。「new クラス名」でインスタンスを生成することができます。

const dog = new Animal(dog,60,15);
const cat = new Animal(dog,45,5);

メソッドを定義する

インスタンスされたものに対して何かしらの処理をするメソッドを定義してみましょう。

先ほどconstructorで初期値を設定したので、その初期値が正しく設定されているかの確認も兼ねて値をコンソールで表示させます。

class Animal {
  constructor(name, height, weight) {
    this.name = name;
    this.height = height;
    this.weight = weight;
  }
  info() {
    console.log(
      `動物:${this.name},体長:${this.height}cm,体重:${this.weight}kg`
    );
  }
}

const dog = new Animal("イヌ", 60, 15);
const cat = new Animal("ネコ", 45, 5);
dog.info(); // -> 動物:イヌ,体長:60cm,体重:15kg
cat.info(); // -> 動物:ネコ,体長:45cm,体重:5kg

正しく名前・体長・体重が表示されていることが確認できました。上記のコードでは、インスタンスされた変数(オブジェクト)に対してメソッドを実行させる処理を記述しましたが、インスタンスされたものに対して必ず実行させたい処理がある場合、constructor内にメソッド名を記述して強制実行させることも可能です。

class Animal {
  constructor(name, height, weight) {
    this.name = name;
    this.height = height;
    this.weight = weight;
    this.info(); // -> インスタンスが生成された時にinfo()を実行
  }
  info() {
    console.log(
      `動物:${this.name},体長:${this.height}cm,体重:${this.weight}kg`
    );
  }
}

const dog = new Animal("イヌ", 60, 15);
const cat = new Animal("ネコ", 45, 5);

クラス継承

クラス継承とは、新しいクラスを作成する時に継承元のプロパティやメソッドなどを呼び出すことができます。

クラス継承を行うには、クラス宣言をする時に「新しいクラス名 extends 継承元クラス名」の形で記述します。続いて、super(スーパー)と呼ばれるものを使用します。

class Animal {
  constructor(name, height, weight) {
    this.name = name;
    this.height = height;
    this.weight = weight;
  }
}

class JapaneseAnimal extends Animal { // -> Animalのクラスを継承
  constructor(name, height, weight, habitat) {
    super(name, height, weight); // -> Animalのプロパティを継承
    this.habitat = habitat;
  }
  info() {
    console.log(
      `動物:${this.name},体長:${this.height}m,体重:${this.weight}kg,生息地:${this.habitat}`
    );
  }
}

const kiji = new JapaneseAnimal("キジ", 0.8, 1, "日本");
kiji.info(); // -> 動物:キジ,体長:0.8m,体重:1kg,生息地:日本

今回の例では登場していませんが、継承元のメソッドを呼び出す場合「super.継承元のメソッド」で呼び出すことができます。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村 FC2 Blog Ranking

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次