ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ES6 - Class / super
    concept/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를 사용한 클래스에서만 사용이 가능하다.

    댓글

Designed by Tistory.