Main Content

정적 메서드

정적 메서드란?

정적 메서드는 클래스와 연결되어 있지만, 해당 클래스의 특정 인스턴스와는 연결되어 있지 않습니다. 이러한 메서드에는 클래스의 객체가 입력 인수로 필요하지 않습니다. 따라서, 클래스의 객체를 생성하지 않고 정적 메서드를 호출할 수 있습니다.

정적 메서드를 정의하는 이유

정적 메서드는 코드를 실행하기 전에 클래스의 인스턴스를 생성하지 않으려는 경우에 유용합니다. 예를 들어, MATLAB® 환경을 설정하거나 정적 메서드를 사용하여 클래스 인스턴스를 생성하는 데 필요한 데이터를 계산한다고 가정하겠습니다.

클래스에 특정 허용오차로 계산되는 pi에 대한 값이 필요하다고 가정합니다. 이 클래스는 클래스 내에 사용할 용도로 내장 pi 함수에 대한 자체 버전을 정의할 수 있습니다. 이 접근 방식에서는 클래스의 내부 작업에 대한 캡슐화를 유지하지만 값을 반환하는 데 클래스의 인스턴스가 필요하지는 않습니다.

정적 메서드 정의하기

메서드를 정적 메서드로 정의하려면 methods 블록의 Static 특성을 true로 설정하십시오. 예를 들면 다음과 같습니다.

classdef MyClass
   methods(Static)
       function p = pi(tol)
           [n d] = rat(pi,tol);
           p = n/d;
       end
   end
end

정적 메서드 호출하기

클래스 이름, 점(.), 메서드 이름을 순서대로 사용하여 정적 메서드를 호출할 수 있습니다.

classname.staticMethodName(args,...)

이전 섹션에서 MyClasspi 메서드를 호출할 때는 다음과 같은 명령문이 필요할 수 있습니다.

value = MyClass.pi(.001);

또한, 여느 메서드와 마찬가지로 클래스의 인스턴스를 사용하여 정적 메서드를 호출할 수도 있습니다.

obj = MyClass;
value = obj.pi(.001);

정적 메서드 상속하기

메서드의 Sealed 특성이 슈퍼클래스에서도 true로 설정되어 있지 않은 경우 서브클래스에서 정적 메서드를 재정의할 수 있습니다.

관련 항목