자바스크립트는 클래스 기반의 객체 지향 언어보다는 프로토타입 기반의 언어로 알려져 있습니다. 이는 객체를 생성하기 위해 생성자 함수와 프로토타입 체인을 이용하는 것을 의미합니다. 이것은 자바스크립트에서 다중 상속을 직접적으로 지원하지 않는다는 의미이기도 합니다. 하지만 자바스크립트를 이해하고 이를 활용한다면 다중 상속과 비슷한 효과를 얻을 수 있습니다.
다중 상속의 개념 이해
다중 상속은 한 클래스가 여러 부모 클래스로부터 상속받는 것을 의미합니다. 이는 부모 클래스들의 특성을 모두 가지고 있는 자식 클래스를 생성할 수 있도록 해줍니다. 예를 들어, Person
, Developer
, Designer
라는 세 가지 클래스가 있다고 했을 때, Developer
는 Person
클래스로부터 개인 정보에 관련된 메서드를, Designer
는 Person
클래스로부터 디자인 관련 메서드를 상속받는 형태이지요.
자바스크립트에서 다중 상속 구현하기
자바스크립트에서 다중 상속을 구현하기 위해선, Object.assign()
메서드를 활용할 수 있습니다. 이 메서드를 사용하면 여러 객체의 프로퍼티 및 메서드를 한 객체로 병합할 수 있습니다.
아래는 Developer
클래스가 Person
클래스와 Designer
클래스로부터 상속받는 예시입니다.
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
console.log(`안녕하세요, ${this.name}입니다.`);
}
function Designer(name, designStyle) {
Person.call(this, name);
this.designStyle = designStyle;
}
Designer.prototype = Object.create(Person.prototype);
Designer.prototype.constructor = Designer;
Designer.prototype.showDesignStyle = function() {
console.log(`저는 ${this.designStyle}을(를) 주로 디자인합니다.`);
}
function Developer(name, codingLanguage) {
Person.call(this, name);
this.codingLanguage = codingLanguage;
}
Object.assign(Developer.prototype, Person.prototype);
Developer.prototype.constructor = Developer;
Developer.prototype.showCodingLanguage = function() {
console.log(`저는 ${this.codingLanguage}를 주로 개발합니다.`);
}
const john = new Developer('John', 'JavaScript');
john.greet(); // 출력: 안녕하세요, John입니다.
john.showCodingLanguage(); // 출력: 저는 JavaScript를 주로 개발합니다.
위의 코드에서 Object.assign()
메서드를 사용하여 Developer
클래스의 프로토타입 객체에 Person
클래스의 메서드를 병합했습니다. 이렇게 함으로써 Developer
클래스는 Person
클래스의 메서드 greet()
을 사용할 수 있게 되었습니다.
요약
자바스크립트에서는 다중 상속을 직접적으로 지원하지 않지만, Object.assign()
메서드를 이용해 다른 클래스의 메서드를 상속받을 수 있습니다. 이를 활용하면 다중 상속과 비슷한 효과를 얻을 수 있습니다. #JavaScript #다중상속