LoginSignup
0
0

オブジェクト指向について

Last updated at Posted at 2023-12-11

クラスとインスタンス

インスタンスは主にnew クラス名()で生成する。

const インスタンス名 = new クラス名();

プロパティとメソッド

クラスを定義するとき

class Car {
  constructor (color) {
    // プロパティの定義
    this.color = color;
  }

  // メソッドの定義
  run () {
    console.log(`${this.color}色の車が走る`);
  }
}

複数のインスタンスを生成する。

const blueCar = new Car('');
const orangeCar = new Car('オレンジ');
const greenCar = new Car('');

メソッドはインスタンス.メソッド()で呼び出す。

blueCar.run(); // blueCarだけ走る

継承

継承のイメージ

子クラスAはmethodAだけでなく、親クラスのpropartyとmethodも使うことができる。
子クラスCのようにpropartyとmethodをオーバーライドして機能変更して使うこともできる。

継承のメリット

  • コードの重複減らしてコードの再利用性を高めることができる。
  • メソッドの追加やオーバーライドで機能拡張できる。

継承の問題点

多重継承問題

①クラスの管理が煩雑になってしまう
②密結合になってしまう。上図だと親クラスを変更すると5つのクラスに影響を及ぼす。

菱形継承問題

孫クラスBのメソッドは子クラスA,子クラスBどちらを継承しているか不透明

💡継承はオブジェクト指向の特徴だが、強みというわけでもない。
継承よりクラス設計の構成を考える。

身近にあるオブジェクト指向

配列

let ary = [1, 2, 3];
ary.length; // 長さプロパティを参照
ary.push(4); // 要素を追加するメソッドを呼び出す

配列リテラルを使わない場合

let ary = new Array(1, 2, 3);
ary.length;
ary.push(4);

Arrayクラスからインスタンスを生成

0
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
0
0