1. 상속이란 ?
현실에서 상속은 부모로 부터 물려 받은 재산을 의미한다.
코딩에서도 비슷하다 부모객체가 자식객체에게 자신의 프로퍼티와 객체를 물려줄때 사용한다.
2. 어떻게 상속을 어떻게 사용할까?
상속을 사용하는 방법은 간단하다.
객체를 생성할 때 extends를 활용해서 부모객체(물려받고자하는 객체)를 적어주면 된다.
예시를 보자.
User 객체의 프로퍼티와 메소드를 상속받아 PremiumUser 객체를 만들어보자.
class User {
constructor(email, birthdate) {
this.email = email;
this.birthdate = birthdate;
}
buy(itme) {
console.log(`${this.email} buys ${item.name}`);
}
}
class PremiunUser extends User {
constructor(email, birthdate, level) {
this.level = level
}
streamMusicForFree() {
console.log(`Free music streaming for ${this.email)`);
}
}
3. 상속시 주의 사항
위와 같이 코드를 작성하고 실행하게 되면 다음과 같은 에러를 확인할 수 있다.
Uncaught ReferenceError: Must call super constructor in derived class before accessing ‘this’ or returning from derived constructor.
이 에러는 자식클래스에서 this를 사용하거나 자식객체를 생성하기 전에 super class를 반드시 호출해야한다는 것이다.
다시 말해서 부모클래스의 객체생성을 먼저해주라는 말인데, 그걸 super 함수로 해주면 된다.
class User {
constructor(email, birthdate) {
this.email = email;
this.birthdate = birthdate;
}
buy(itme) {
console.log(`${this.email} buys ${item.name}`);
}
}
class PremiunUser extends User {
constructor(email, birthdate, level) {
super(email, birthdate);
this.level = level ;
}
streamMusicForFree() {
console.log(`Free music streaming for ${this.email)`);
}
}
const pUser1 = new PremiumUser(‘chrif123@gmail.com’, ‘122212’, 3) ;
console.log(pUser1.email);
console.log(pUser1.birthdate);
console.log(pUser1.level);
pUser1.streamMusicForFree();
4. 상속을 사용하는 이유
보다시피 상속을 사용하게 되면 반복적인 코드 사용이 줄어든다. 이를 코드재사용성이 좋아진다고 말한다.
사실 코드 재사용성은 줄일 수 있는 방법들은 많다.
예를 들어 하나의 변수로 클래스를 사용해도 재사용성은 좋아진다.
상속과의 차이점은 무엇일까? (is-a , has-a 관계)
상속은 부모객체에서 프로퍼티나 객체가 바뀌면 자식객체에서도 동일하게 바뀌게 된다. ( is-a 관계 )
변수로 사용하게 되면 서로 독립적으로 활용할 수 있다. ( has-a 관계 )
객체지향프로그래밍 4가지 기둥
[JS] 객체지향 프로그래밍 - 4가지 기둥 ( 추상화 )
항상 개발하면서 객체지향이라는 개념을 잊어버린다. 이렇게 새로운 언어를 공부할때 마다 상기된다. 이럴때라도 한번씩 확인하면 개발하면서 적용하는 순간이 오겠지. 객체지향 프로그래밍의
soso-dev-log.tistory.com
[JS] 객체지향 프로그래밍 - 4가지 기둥 ( 캡슐화 )
지난 글에서 객체지향 프로그래밍의 4가지 기둥 ( 추상화, 캡슐화, 상속, 다형성 ) 중 추상화에 대해 알아보았다. [JS] 객체지향 프로그래밍 - 4가지 기둥 ( 추상화 )항상 개발하면서 객체지향이라
soso-dev-log.tistory.com
[JS] 객체지향프로그래밍 - 4가지 기둥 (다형성)
다형성이란 객체지향프로그래밍 4가지 기둥 중 마지막 기둥 다형성은 많은 형태를 갖고 있는 성질을 말한다. 객체지향프로그래밍에서 다형성은 하나의 변수가 다양한 종류의 객체를 가리키는
soso-dev-log.tistory.com
[JS] 객체지향프로그래밍 - 4가지 기둥 (다형성)
다형성이란 객체지향프로그래밍 4가지 기둥 중 마지막 기둥 다형성은 많은 형태를 갖고 있는 성질을 말한다. 객체지향프로그래밍에서 다형성은 하나의 변수가 다양한 종류의 객체를 가리키는
soso-dev-log.tistory.com
'JavaScript' 카테고리의 다른 글
[JS] 객체프로그래밍 4가지 기둥 정리 (0) | 2023.06.22 |
---|---|
[JS] 객체지향프로그래밍 - 4가지 기둥 (다형성) (0) | 2023.04.17 |
[JS] 객체지향 프로그래밍 - 4가지 기둥 ( 캡슐화 ) (0) | 2023.03.28 |
[JS] 객체지향 프로그래밍 - 4가지 기둥 ( 추상화 ) (0) | 2023.03.27 |
[JS] 객체지향 프로그래밍 - 객체 생성 (0) | 2023.03.23 |