-
ES6 - Class / superconcept/javascript - ES6 2020. 5. 10. 02:53
요기서 ES5로 이렇게 만들어줬던 코드를
ES6로는 이렇게 간단하게 표현할 수 있다.
class Human { constructor(name) { this.name = name; } sleep() { console.log('zzz') } } let john = new Human('john'); class Student extends Human { constructor(name){ super(name); } learn() { console.log('study hard') } } let oana = new Student('oana'); john.sleep(); // 'zzz' oana.learn(); // 'study hard' oana.sleep(); // 'zzz'
그런데 객체지향에서는 다형성이라는 특징이 있다!
그것은 곧,
oana의 sleep과 john의 sleep이 다른 형태로 나타나게 할 수 있는 방법이 있다는 것이다.
class Human { constructor(name) { this.name = name; } sleep() { console.log('zzz') } } let john = new Human('john'); class Student extends Human { constructor(name){ super(name); } sleep() { //이 부분이 추가됨!!! super.sleep(); console.log('wake up!!!') } learn() { console.log('study hard') } } let oana = new Student('oana'); john.sleep(); // 'zzz' oana.learn(); // 'study hard' oana.sleep(); // 'zzz' 'wake up!!!'
이렇게 super.sleep()을 추가해주면 부모의 속성에서 다형성을 가질 수 있다.
super가 무엇이냐?
부모object의 함수를 호출할 때 사용된다.
그렇기 때문에 extends를 사용한 클래스에서만 사용이 가능하다.
'concept > javascript - ES6' 카테고리의 다른 글
ES6 - for ... of loops (0) 2020.05.02 ES6 - Arrow Functions (화살표 함수) (0) 2020.05.02 ES 6 - Template literals (0) 2020.05.02 ES6 - Default Parameter / Spread operator / Rest parameters (0) 2020.05.02 ES 6 - destructuring assignment (구조분해할당) (0) 2020.05.01