본문 바로가기

Language/Javascript | Typescript

[Javascript] Class란 무엇인가

728x90
반응형

Javascript(이하 JS)는 다른 객체지향 언어와는 차이점이 있지만 프로토타입 기반의 객체지향 언어이며, 강력한 객체지향 프로그래밍 능력을 갖고 있는 언어이다.

 

프로토타입 기반의 객체지형 언어란 클래스가 필요 없는 객체지향 프로그래밍 언어를 프로토타입 기반의 객체지향 언어라고 하며 JS는 ES5까지는 클래스 선언을 하지 않고 생성자 함수와 프로토타입 선언을 통해 객체지향의 상속을 구현할 수 있었다.

 

하지만 ES6이후 클래스 문법이 도입되면서 클래스를 선언하여 사용할 수 있게 되었고, 기존 Java나 C#과 같은 클래스 기반 객체지향 프로그래밍 언어에 익숙한 개발자들은 빠르게 학습 할 수 있게 되었다.

 

JS에서 사용하는 클래스는 기존(ES5)의 프로토타입 기반 패턴을 클래스 기반 패턴 처럼 사용하는 함수이기 때문에 클래스 기반 객체지향 프로그래밍 언어에서 사용하는 클래스와는 조금 다르다.

클래스 정의


JS에서 클래스 선언 시 class 키워드를 사용히여 정의한다.


// 클래스 선언
class Human {}

// 익명 클래스 선언
const Human = class {};

// 기명 클래스 선언
const Human = class HumanClass {};

 

클래스 안에는 0개 이상의 메서드만 정의할 수 있으며, 정의할 수 있는 메서드는 constructor(생성자), 프로토타입 메서드, 정적 메서드가 있다.

class Human {
    // 생성자
    constructor(name, age) {
        //인스턴스 생성 및 초기화
        this.name = name;
        this.age = age;
    }

    // 프로토타입 메서드
    goHome() {
        console.log(`${this.name}는 집으로 가는길입니다,`);
    }

    // 정적 메서드
    static sayHello(){
        console.log("hello!!");
    }
}

// 인스턴스 생성
const man = new Human("홍길동", 20);

console.log(man.name);
console.log(man.age);

man.goHome();

Human.sayHello();

실행 사진

728x90
반응형