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개의 댓글

관련 채용 정보