class MakeAccount {
constructor(name, money) {
this.holder = name
this.balance = money
}
checkBalance() {
return `고객님의 현재 잔액은 ${this.balance}원 입니다.`
}
}
let account1 = new MakeAccount('Choi', 1000)
console.log(account1)
console.log(account1.name)
console.log(account1.money)
console.log(account1.checkBalance())
Class란 위와같이 사용하는 문법이다.
기존의 Constructor Function과 다른점은 constructor라는 메소드를 사용해서 프로퍼티를 선언한다는 점과 프로퍼티선언을 다하고 메소드를 분리해서 선언한다는 점이다. class에서는 constructor를 사용한다는 것을 꼭 기억하면 좋겠다.
위와같이 class객체가 선언이 되면 Constructor Function과 같이 new키워드를 통해 객체(인스턴스)를 생성할 수 있다.
class MakeAccount {
constructor(name, money) {
this.holder = name
this.balance = money
}
checkBalance() {
return `고객님의 현재 잔액은 ${this.balance}원 입니다.`
}
}
class SaveAccount extends MakeAccount {
constructor(name, money, year = 0) {
//super(name, money)
this.year = year
}
interest(rate) {
return this.balance *(1 + (rate * this.year))
}
}
let saveAc = new SaveAccount();
console.log(saveAc)
console.log(saveAc.holder)
console.log(saveAc.balance)
console.log(saveAc.ckeckBalance())
console.log(saveAc.interest(0.04))
클래스는 extends키워드로 부모클래스의 프로퍼티와 메소드를 상속받을 수 있다. 그러나 지금 위의 코드를 그대로 실행시켜보면 Error가 발생할 것이다. 그 이유는 중간에 super키워드가 주석처리가 되어 있기 때문이다. 위 코드가 정상작동하려면 해당주석을 해제하고 super로 자식클래스내에서 부모클래스를 호출해야한다.
다시 말하자면 extends로 부모클래스와 자식클래스를 연결을 시켰다면 super로 자식클래스내에서 부모클래스를 호출해야한다.
주석을 해제한다면 SaveAccount로 생성된 인스턴스 SaveAc도 부모객체와같은 프로퍼티와 메소드를 가지고 있을것이다.
상속에서는 extends와 super를 사용해 부모클래스와 연결 및 호출을 한다는 것을 꼭 기억하길바란다.