기반을 다지자 ES6

Class

Jungsoomin :) 2020. 10. 1. 22:11

자바스크립트는 프로토 타입 기반의 언어이므로 Class 기반 언어가 아니였다.

 

근본은 객체지향 프로그래밍에 있다(OOP)

 

하나의 시스템은 속성, 동작 으로 나뉜다.

 

이의 시스템들이 모여 또 하나의 거대한 시스템을 이룬다.

 

  • 상태는 필드
  • 동작은 메서드
  • 상속 으로서 다형성을 구현한다.

클래스는 객체의 설계도로 객체에 대한 정의를 나타낸다.

 

프로그래밍 에서 모든 것들은 객체(하나의 시스템) 으로 만들어진다.

 


자바 스크립트는 어떻게 정의하나.

대부분이 자바의 문법과 동일하다. 

  • 생성자constructor 를 사용한다.
  • 필드선언변수선언 키워드를 사용하지 않는다.
  • 메서드 재정의부모클래스의 시그니쳐를 그대로 덮어 씌운다.
class Shape1 {

static create(x,y) {return new Shape(x,y);}
name = 'Shape1'; // this.name = 'Shape1' 과 동일
constructor(x,y){
    this.move(x,y);
}

move(x,y) {
    this.x = x;
    this.y = y;
}

area() {
    return 0;
}
}


var s = new Shape1(0,0);

s.area()
0

///////////상속///////////

class Circle1 extends Shape1{
    name = 'Circle1';
    
    constructor(x,y,radius){
        super(x,y);// 부모 생성자 호출
        this.radius = radius;
    }

    area() {// 메서드 재정의
        if ( this.radius === 0) return super.area();
        return this.radius * this.radius;
    }    

    

}

var c = new Circle1(0,0,10);

c.area()
100

 

 

 

'기반을 다지자 ES6' 카테고리의 다른 글

예외처리  (0) 2020.10.02
모듈  (0) 2020.10.01
전개연산자 Spread  (0) 2020.10.01
구조 분해 할당. Destructuring  (0) 2020.10.01
JS 코드 스타일  (0) 2020.10.01