클래스에서 선언되었지만 해당 클래스의 특정 인스턴스화에 의존하지 않는 객체 지향 컴퓨터 프로그래밍 메소드를 정적 메소드라고합니다. 대부분의 프로그래밍 언어는 메소드를 정적으로 만드는 메소드 선언에 static 키워드를 포함합니다. 이러한 메소드는 포함 된 클래스에만 속하며 해당 클래스에서 인스턴스화 된 객체에는 속하지 않습니다. 이것들은 종종 클래스 메소드 라고 불립니다.
클래스의 리터럴 이름은 일반적으로 인스턴스화 된 객체의 이름으로 참조하는 대신 정적 메서드에 액세스하는 데 사용됩니다. Java에서는 객체 이름을 사용하여 이러한 메소드를 참조 할 수 있지만 사용하지 않는 것이 좋습니다. 객체 이름을 사용하는 경우 코드를 읽는 사람은 이러한 방법 중 하나를 인스턴스 방법과 혼동 할 수 있습니다.
정적 메소드는 특정 클래스의 인스턴스 변수에 의존하지 않는 유틸리티 클래스에서 종종 사용됩니다. 또한 프로그래머가 메소드에 액세스해야하지만 포함 된 클래스를 인스턴스화 할 필요가없는 경우에도 사용됩니다. 유틸리티 클래스는 일반적으로 오브젝트로 인스턴스화되지 않습니다. 유틸리티 메소드가 오브젝트 정보를 수정해야하는 경우는 드 unusual니다. pow ()와 같은 java.lang.math 클래스의 메소드는이 유형의 메소드가 유틸리티 클래스에서 사용되는 방법의 예입니다.
인스턴스 메소드는 인스턴스 변수, 정적 변수, 인스턴스 메소드 및 정적 메소드에 직접 액세스 할 수 있습니다. 정적 메소드는 인스턴스 변수 및 인스턴스 메소드에 직접 액세스 할 수 없습니다. 정적 메소드보다 클래스 멤버에 더 잘 액세스하는 인스턴스 메소드의 특성으로 인해 인스턴스 메소드는 일반 클래스에서 일반적으로 사용되는 메소드 유형입니다.
다형성이 사용될 때 상속 중에 정적 메소드의 한 가지 주요 단점이 발생합니다. 부모 정적 메서드가 final로 선언되지 않는 한, 자식 클래스에서 재정의되는 것과 동일한 자식 정적 메서드를 코딩 할 수 있습니다. 정적 메서드를 재정의 할 수 없으므로 기술적으로 재정의 대신 숨김이라고합니다.
숨기기를 사용하는 경우 클래스 이름을 사용하여 상위 정적 메소드에 액세스하면 상위 메소드가 사용됩니다. 객체 이름을 사용하여 재정의 된 자식 정적 메서드에 액세스하면 재정의 된 자식 메서드가 사용됩니다. 자식 개체가 부모로 업 캐스트 될 때 문제가 발생합니다. 이 경우 업 캐스트 자식 정적 메서드를 호출하면 예상 자식 메서드 대신 부모 메서드가 사용됩니다. 진정한 다형성을 사용하면 자식 메서드는 업 캐스트 후 활성화됩니다.


