class Grub {
constructor(age, color, food){
this.age = 0,
this.color = "pink",
this.food = "jelly"
}
eat(){
return 'Mmmmmmmmm jelly'
}
}
module.exports = Grub;
const Grub = require('./Grub');
class Bee extends Grub {
constructor(age, color, job){
super(),
this.age = 5,
this.job = "Keep on growing",
this.color = "yellow"
}
}
module.exports = Bee;
const Bee = require('./Bee');
class ForagerBee extends Bee {
// Bee뿐 아니라 Grub에서도 상속받지만 Bee 자체가 Grub의 하위 클래스이기 때문에 따로 적어주지 않아도 된다.
constructor(age, job, canFly, treasureChest){
super(), // 아래 명시한 속성외에 Grub과 Bee가 가지고 있는 속성을 다 상속받는다
this.age = 10,
this.job = "find pollen",
this.canFly = true,
this.treasureChest = []
}
forage(treasure) {
this.treasureChest.push(treasure)
}
}
module.exports = ForagerBee;
const Bee = require('./Bee');
class HoneyMakerBee extends Bee{
constructor(age, job, honeyPot){
super(),
this.age = 10,
this.job = "make honey",
this.honeyPot = 0
}
makeHoney(){
this.honeyPot += 1
}
giveHoney(){
this.honeyPot -= 1
}
}
module.exports = HoneyMakerBee;
super 함수에는 뭐가 들어있길래 호출만 하면 상속이 되는걸까?
-> 상위 클래스의 속성과 메소드가 담겨있다.
상위 클래스로부터 상속받아서 이용하고 싶은 속성이 있을 때, 해당 속성을 하위 클래스의 생성자 함수의 인자로서 제외, 혹은 포함시키는 것 중 어느 것이 바람직한 작성법인가?
-> super()안에 넣어주는 것이 명시적으로 좋다.