class

리충녕·2023년 11월 25일
0

Typescript

목록 보기
14/18

📋 class

  • 객체를 정의하는 설계도 같은 의미이다.
  • 객체의 상태를 나타내는 필드와 행동을 나타내는 메서드로 구성된다.
  • 필드는 클래스에 정의된 변수, 메서드는 클래스 내에 정의된 함수를 의미한다.
  • 클래스에 의해 생성된 객체를 인스턴스라 한다.

클래스 기본 문법

constructor

생성자라고 불리며 인스턴스를 생성하고 클래스 필드를 초기화 하기 위한 메서드이다.
constructor는 클래스 내에 한개만 존재할 수 있으므로 명심하자.

  • 💩 자바스크립트의 클래스 문법
class 클래스명 {
  constructor(name, age) {
    this.name = name;		// this : 해당 클래스로 생성된 인스턴스 지칭
    this.age = age;
  }
}
  • 💩 타입스크립트의 클래스 문법

타입스크립트는 생성자 메서드와 함께 클래스 바디에 인스턴스 변수를 정의해주어야 한다.

class Ts {
    name : string;		// 인스턴스 변수 선언
  
    constructor(name : string) {
        this.name = name;
    }
}

아래 예시처럼 생성자 내부에 접근제어자를 활용해 매개변수 작성 시 매개변수의 속성값은 자동으로 초기화된다.

class Ts {
  constructor(
  	private name : string,
    private name : age
  ) {}

추상 클래스

오직 다른 클래스가 상속받기 위한 용도로만 사용되는 클래스이다.
상속 용도로만 사용되기 때문에 추상 클래스로 새로운 인스턴스를 만들 수 없다.
추상 클래스를 상속받으려면 extends 키워드를 사용한다.

abstract class User {
    constructor(
        public firstName : string,
        public lastName : string,
        public nickName : string
    ) {}
}

// 상속받은 클래스에 프로퍼티를 추가하여 사용할 수 있는 것이다.
class Player extends User {
    hello() {
        console.log(`hello ${this.firstName + this.lastName}`);
    }
};

const lee = new Player("lee", "cn", "LCN");
lee.hello();

const kim = new User(); // error

추상 메서드

추상 메서드는 추상 클래스 내부에서 구현할 수 있는 함수이다.

일반 메서드와 다르게 클래스 내에서 구현되지 않으며 상속받은 클래스 내부에서 구현되어야 한다.

추상 클래스에서는 추상 메서드의 call signature만 지정하는 것이다.

abstract class User {
    constructor(
        public firstName : string,
        public lastName : string,
        public nickName : string
    ) {}
    fullName() {                // general method
        console.log(`${this.firstName + this.lastName}`)
    }
    abstract hello() : void;    // abstract method
}

class Player extends User {
    hello() {
        console.log(`hello ${this.fullName()}`)		// 추상 메서드 구현
    }
};

const lee = new Player("lee", "cn", "LCN");
lee.hello();

접근 제어자

클래스, 메서드에 접근 가능성을 설정하는 객체지향 언어의 키워드이다.

  • 접근 제어자 종류
수식어접근 범위
private선언한 클래스 내에서만 접근 가능
public어디에서나 접근 가능하며, 접근 제어자의 기본값이다
protected선언한 클래스, 상속받은 자식 클래스에서만 접근 가능

참고

노마드 코더
클래스

0개의 댓글