JavaScript의 클래스에는 정적 메서드라는 개념이 있습니다. 정적 메서드는 클래스의 인스턴스가 아니라 클래스 자체에 연결된 함수입니다. 이 메서드는 static 키워드를 사용해 선언됩니다.
정의와 사용법
아래는 static 메서드의 예입니다:
class MyClass {
static myStaticMethod() {
return 'Hello, World!';
}
}
console.log(MyClass.myStaticMethod()); // "Hello, World!"
여기서 myStaticMethod는 MyClass의 정적 메서드입니다.
이 메서드는 MyClass.myStaticMethod() 형태로 직접 호출됩니다.
반면, 인스턴스 메서드는 클래스의 인스턴스를 통해 호출되므로,
이 두 유형의 메서드는 다르게 작동합니다.
인스턴스 생성 없이 사용 가능:
정적 메서드는 클래스의 인스턴스를 생성하지 않고도 호출할 수 있습니다.
이는 인스턴스화 과정 없이도 클래스의 기능을 사용할 수 있도록 합니다.
예를 들어, 유틸리티 클래스에서 이런 방식이 유용하게 사용됩니다.
상속 가능:
정적 메서드는 부모 클래스에서 자식 클래스로 상속됩니다.
즉, 자식 클래스에서 부모 클래스의 정적 메서드를 호출할 수 있습니다.
인스턴스 상태에 접근 불가:
정적 메서드는 인스턴스의 상태에 접근할 수 없습니다.
즉, 인스턴스의 프로퍼티를 읽거나 변경할 수 없습니다.
정적 메서드는 오직 클래스 수준의 정보에만 접근할 수 있습니다.
오버라이드 어려움:
인스턴스 메서드와 달리, 정적 메서드는 오버라이드하기 어렵습니다.
이는 정적 메서드가 클래스 수준에서 정의되기 때문에,
하위 클래스에서 동일한 메서드 이름을 사용하여 새로운 구현을 제공하는 것이 더 어렵습니다.