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