자바스크립트는 프로토 타입 기반의 언어이므로 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 |