TypeScript와 Class(2) - Class

난나다·2023년 3월 29일
0

EliceSW4

목록 보기
3/7

Class

객체 지향 프로그래밍(OOP)

Class 용어

  • 클래스의 요소: 멤버(member), 필드(field), 생성자(constructor), 메소드(method)

  • 인스턴스(instance): new 연산자에 의해 생성된 객체

Class 생성

class Person {
	name :string;
  	constructor(name :string) {
    	this.name = name;
    }
  	say() {
    	return "Hello, My name is " + this.name;
    }
}

let person = new Person("june");

접근 제어자 / 상속

  • 속성 또는 메소드로는 접근을 제한하기 위해 사용
  • public, protected, private

public

  • 프로그램 내에 선언된 멤버들이 자유롭게 접근 가능
  • 타입스크립트는 기본적으로 public으로 선언되지만, 명시적으로 표시해도 된다.
class Animal {
	public name :string;
  	constructor(thsName :string) {
    	this.name = theName;  
    }
}

new Animal("Cat").name;

private

  • 멤버가 포함된 클래스 외부에서의 접근을 막음
class Animal {
	private name :string;
  	constructor(theName :string) {
    	this.name = theName;
    }
}

new Animal("Cat").name; // Error

protected

  • 멤버가 포함된 클래스와 그 하위 클래스를 제외한 외부에서의 접근을 막는다.

상속

  • extends 키워드로 기존 클래스에서 확장된 새로운 클래스를 생성할 수 있다.

  • 기초 클래스는 상위클래스(superclass), 파생된 클래스는 하위클래스(subclass)

Getters & Setters / readonly / static

getters & setters

  • 비공개로 설정하려는 속성은 private로 설정하여 직접 호출하거나 수정하지 않는다.(대신 getters / setters 함수 사용)

readonly

  • 읽기만 가능한 속성 선언을 위해 사용.(수정 불가)

  • 변경될 경우가 없는 상수에 해당 키워드를 사용.

  • const는 변수 참조를 위해, readonly는 속성을 위해

static

  • 객체마다 할당되지 않고 클래스의 모든 객체가 공유하는 멤버인 전역 멤버를 선언할 때 사용.(인스턴스 없이도 클래스 자체에서 해당 변수를 접근)

추상 클래스

다른 클래스들이 파생될 수 있는 기초 클래스로 직접 인스턴스화를 할 수 없는 클래스

abstract 키워드를 이용해 추상 클래스나 추상 메서드를 정의하며, 추상 메소드는 클래스에 구현되어 있지 않기 때문에 파생된 클래스에서 정의해야 한다.

추상 클래스 사용을 위해서는 상속을 강제한다.

출처

이 글은 엘리스 SW 엔지니어 트랙을 기반으로 작성되었습니다.

0개의 댓글