nikumaro2’s blog

webエンジニアです。HTML、CSS、Javascript、React.jsの開発についてまとめます。また、初心者英語TOEIC350点。音楽(ベース)、ゴルフなどもたまに、、

抽象クラスについて Javascript

抽象クラスについてまとめる

下のコードは、
抽象クラスでアニマルクラスを作成。
犬クラスに抽象クラスを継承。
鳥クラスに抽象クラスを継承。
です。

抽象クラスを使わないと、
犬でも、鳥でも、
毎回以下を書かなければいけないので、面倒だし、読みずらいし、変更したときに、1つ1つ変更しなければいけない。。
console.log('歩く')
console.log('速く歩く')
console.log('歩く')
console.log('歩く')
console.log('遅く歩く')
console.log('歩く')




//抽象クラス(アニマルクラス)
//歩くのは動物にとって共通のことなので、抽象クラスで定義する
//Dog, Birdで歩く動作を重複して書く必要がない
abstract class Animal {

    constructor(){

    }

    walk(){
        console.log('歩く')
        console.log('速く歩く')
        console.log('歩く')
        console.log('歩く')
        console.log('遅く歩く')
        console.log('歩く')
    }

}



//////////////////////////////////////////////////////////////////////////////////////////////////////
//犬は、以下ができる
//歩く:歩くは再定義しないで、抽象クラスのwalk()を使う
//吠える:吠えるは、犬のだけの技なので抽象クラスでは定義せずに、ここで定義する
class Dog extends Animal {

    constructor(){
        super();
    }

    walk(){
        super.walk();  //抽象クラスのwalk()を使う
    }

    bark(){
        console.log('吠える')
    }
}


//////////////////////////////////////////////////////////////////////////////////////////////////////
//鳥は、以下ができる
//歩く:歩くは再定義しないで、抽象クラスのwalk()を使う
//飛ぶ:飛ぶは、鳥だけの技なので抽象クラスでは定義せずに、ここで定義する
class Bird extends Animal {

    constructor(){
        super();
    }

    walk(){
        super.walk();  //抽象クラスのwalk()を使う
    }

    fly(){
        console.log('飛ぶ')
    }
}