ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상속 - 객체지향 | 생활코딩
    Javascript/ECMAScript 2009 (ES5) 2020. 2. 9. 15:46
    반응형

    [출처 : https://opentutorials.org]

    상속(inheritance)이란?

    객체는 연관된 로직들로 이루어진 작은 프로그램이라고 할 수 있다. 상속은 객체의 로직을 그대로 물려 받는 또 다른 객체를 만들 수 있는 기능을 의미한다. 기존의 로직을 수정하고 변경해서 파생된 새로운 객체를 만들 수 있게 해준다. 

     

    상속을 위한 기본적인 준비는 다음과 같다.

    function Gundam(code){
    	this.code = code;
    }
    Gundam.prototype.code=null;
    Gundam.prototype.introduce = function(){
    	return "This is "+name;
    }
    var first = new Gundam("RX-78-2")
    console.log(first.introduce());    // This is RX-78-2

    이제 상속을 해보자

    function Gundam(code) {
    	this.code = code;
    }
    Gundam.prototype.code = null;
    Gundam.prototype.intro = function(){
    	return "This is "+this.code;
    }
    function ArmoredCore(code){
    	this.code = code;
    }
    
    // 생성자(ArmoredCore)의 프로토타입(prototype)에 상속받고 싶은 객체(Gundam)를 할당
    ArmoredCore.prototype = new Gundam();    
    
    // 상속 - 기능의 추가 
    // : ArmoredCore는 Gundam의 기능을 가지면서 Gundam에 없는 메소드 maker를 가지고 있다.
    ArmoredCore.prototype.maker = function(){
    	return "Kotobukiya makes "+this.code;
    }
    
    var nx04 = new ArmoredCore("Lineark White Glint")
    
    console.log(nx04.intro());    // This is Lineark White Glint
    console.log(nx04.maker());    // Kotobukiya makes Lineark White Glint

    ArmoredCore라는 생성자를 만들었다. 그리고 이 생성자의 prototype과 Gundam의 객체를 연결했더니 ArmoredCore객체도 메소드 intro를 사용할 수 있게 되었다. ArmoredCore가 Gundam의 기능을 상속하고 있는 것이다.

    단순히 똑같은 기능을 갖게 되는 것이라면 상속의 의의는 사라질 것이다. 부모의 기능을 계승 발전할 수 있는 것이 상속의 가치다.

    반응형

    댓글

Luster Sun