情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで継承を行う(派生クラスを作成する)

継承を行うにはutil.inherits関数を使用する方法とECMAScript 6で追加されたクラスを使用する方法があります。

util.inherits関数

var util = require('util');

util.inherits(Xxx, Yyy);

第1引数に子コンストラクタを指定します。

第2引数に親コンストラクタを指定します。

なお、この関数を使用して継承を行うと第1引数の子コンストラクタのsuper_プロパティに親コンストラクタが格納されます。

クラス

ECMAScript 6で追加されたクラスの使用方法に関しては下の記事を参照してください。

サンプルコード1

util.inherits関数の使用例です。

util-inherits.js

var util = require('util');

function Currency (name, code) {
    this.name = name;
    this.code = code;
}
Currency.prototype.toString = function () {
    return this.name + ' ' + this.code;
};
function CryptoCurrency (name, code, author) {
    Currency.call(this, name, code);

    this.author = author;
}
util.inherits(CryptoCurrency, Currency);
CryptoCurrency.prototype.toString = function () {
    return CryptoCurrency.super_.prototype.toString.call(this) + ' ' + this.author;
};

var bitcoin = new CryptoCurrency('bitcoin', 'BTC', 'Satoshi Nakamoto');
console.log(bitcoin.name);
console.log(bitcoin.code);
console.log(bitcoin.author);
console.log(bitcoin.toString());

実行結果

C:\work\node>node util-inherits.js
bitcoin
BTC
Satoshi Nakamoto
bitcoin BTC Satoshi Nakamoto

サンプルコード2

ECMAScript 6で追加されたクラスの使用例です。

class.js

class Currency {
    constructor (name, code) {
        this.name = name;
        this.code = code;
    }
    toString () {
        return this.name + ' ' + this.code;
    }
}

class CryptoCurrency extends Currency {
    constructor (name, code, author) {
        super(name, code);
        this.author = author;
    }
    toString () {
        return super.toString() + ' ' + this.author;
    }
}

var bitcoin = new CryptoCurrency('bitcoin', 'BTC', 'Satoshi Nakamoto');
console.log(bitcoin.name);
console.log(bitcoin.code);
console.log(bitcoin.author);
console.log(bitcoin.toString());

実行結果

C:\work\node>node class.js
bitcoin
BTC
Satoshi Nakamoto
bitcoin BTC Satoshi Nakamoto

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js