static 키워드를 가지는 변수로 모든 인스턴스가 공통된 저장공간을 공유클래스명.변수로 접근constructor 내부에서 this에 할당하거나 클래스에 직접 선언this 키워드를 통해 접근하거나 생성된 인스턴스 이름을 통해 접근let, const 등으로 선언된 변수{ } 안에서만 유효하며 외부에서는 접근 불가class Whale {
// 인스턴스 필드 (접근 제한자 + 타입 명시)
public gender: string = 'female';
// 클래스 정적 필드 (공통 데이터)
public static speciesName: string = 'Whale';
public swimming(): void {
// 지역 변수 (메소드 종료 시 사라짐)
const action: string = "헤엄칩니다.";
console.log(`${this.gender} 고래가 ${action}`);
}
}
// 정적 필드의 경우, 인스턴스 없이 바로 접근 가능
console.log(Whale.speciesName); // "Whale" 출력 (클래스명으로 접근)
const myWhale = new Whale();
console.log(myWhale.gender); // "female" 출력 (인스턴스로 접근)
myWhale.swimming();
class 내에 정의 된 함수
static 키워드 여부에 따라 아래와 같이 구분
static 키워드를 가진 메소드로, 인스턴스 생성 없이 클래스 이름으로 직접 호출
클래스 메소드 내부에서 인스턴스 변수나 인스턴스 메소드를 사용할 수 없으므로 주의
유틸리티 함수(계산기, 포맷 변환 등)를 만들 때 주로 사용
프로그램이 종료될 때 소멸static 키워드가 없는 메소드
인스턴스를 생성한 후에만 호출 가능
this 키워드를 통해 인스턴스 변수나 인스턴스 메소드에 접근 가능
인스턴스가 소멸될 때 소멸| 구분 | 인스턴스 (this) | 정적 (static) |
|---|---|---|
| 소속 | 생성된 객체(인스턴스) 개별 소속 | 클래스(설계도) 자체 소속 |
| 생성 시점 | new 키워드를 사용해 객체를 만들 때 |
프로그램이 실행될 때 (클래스 로딩 시) |
| 메모리 위치 | Heap (힙) 영역 | Static / Method (정적) 영역 |
| 접근 방법 | 변수명(참조변수)을 통해 접근 | 클래스 이름으로 직접 접근 |
| 참조 가능 여부 | static 필드/메소드 참조 가능 | this(인스턴스) 참조 절대 불가 |
class Calculator {
// 인스턴스 변수
private owner: string = "Admin";
// 스태틱 메소드 (Static Method)
public static addStatic(a: number, b: number): number {
// return this.owner; // Error: 스태틱 메소드는 인스턴스 변수에 접근 불가
return a + b;
}
// 인스턴스 메소드 (Instance Method)
public add(a: number, b: number): number {
console.log(`사용자: ${this.owner}`); // 인스턴스 변수 접근 가능
return a + b;
}
}
// 스태틱 메소드: 인스턴스 생성 없이 클래스명으로 바로 호출
console.log(Calculator.addStatic(5, 3));
// 인스턴스 메소드: 반드시 인스턴스 생성 후 호출
const calculator = new Calculator();
console.log(calculator.add(2, 3));
객체가 생성될 때 자동으로 호출되는 특수 메소드
constructor 키워드를 이용하여 정의
주로 객체의 초기화 또는 인스턴스 생성시 실행 되어야 하는 작업을 위해 사용하는 특수한 메소드
개발자가 생성자 메소드를 생성하지 않을 경우 **기본 생성자(Default Constructor)**가 실행
class Test {
// 기본 생성자
constructor() {}
}