Class

Class

개요

es6에서는 class가 추가 됐습니다. class를 선언하기 위해선 class 키워드를 사용해야 합니다.

1
2
3
class Human {
// do something
}

constructor(생성자)

constructor 메소드는 class로 생성된 객체를 생성하고 초기화하기 위한 특수한 메소드입니다. constructor라는 메서드는 한개만 존재할 수 있습니다. 한개 이상 사용하면 SyntaxError가 발생합니다.

constructor는 부모 클래스의 constructor를 호출하기 위해 super키워드를 사용할 수 있습니다.

1
2
3
4
5
6
7
class Human {
constructor(height, width) {
super()
this.height = height;
this.width = width;
}
}

Static methods

static 키워드는 클래스를 위한 정적(static) 메소드를 정의합니다. 정적 메소드는 클래스의 인스턴스화 없이 호출되며, 클래스의 인스턴스에서는 호출할 수 없습니다. 정적 메소드는 어플리케이션을 위한 유틸리티 함수를 생성하는데 주로 사용 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}

static distance(a, b) {
const dx = a.x - b.x;
const dy = a.y - b.y;

return Math.sqrt(dx * dx + dy * dy);
}
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);

console.log(Point.distance(p1, p2));

extends를 통한 클래스 상속 (sub classing)

extends 키워드는 클래스 선언이나 클래스 표현식에서 다른 클래스의 자식 클래스를 생성하기 위해 사용 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Animal {
constructor(name) {
this.name = name;
}

speak() {
console.log(this.name + ' makes a noise.');
}
}

class Dog extends Animal {
speak() {
console.log(this.name + 'barks.');
}
}

super를 통한 상위 클래스 호출

super키워드는 객체의 부모가 가지고 있는 함수들을 호출하기 위해 사용됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Cat {
constructor(name) {
this.name = name || 'noname';
}

speak() {
console.log(this.name + ' makes a noise.');
}
}

class Lion extends Cat {
constructor() {
super();
}

speak() {
super.speak();
console.log(this.name + ' roars.');
}
}

const lion = new Lion();
Share