Main Content

클래스 설계 내 메서드

클래스 메서드

메서드는 클래스의 객체에 대해 수행되는 연산을 구현하는 함수입니다. 메서드는 다른 클래스 멤버와 마찬가지로 캡슐화 개념을 지원합니다. 즉, 클래스 인스턴스에는 속성의 데이터가 포함되고, 클래스 메서드는 해당 데이터에 대해 연산을 수행합니다. 이러한 설계는 클래스의 내부 작업을 클래스 외부 코드로부터 숨기며, 따라서 클래스 외부 코드에 영향을 미치지 않고 클래스 구현을 변경할 수 있습니다.

메서드는 다른 메서드 및 속성을 포함하여 클래스의 프라이빗 멤버에 액세스할 수 있습니다. 이렇게 캡슐화하면 데이터를 숨길 수 있으며 객체에 저장된 데이터에 액세스하기 위해 사용해야 하는 특수한 인터페이스를 생성할 수 있습니다.

예제와 구문

클래스 작성을 시작하는 예제는 간단한 클래스 생성하기 항목을 참조하십시오.

샘플 코드와 구문은 메서드 구문 항목을 참조하십시오.

표준 MATLAB® 동작을 수정하는 클래스를 생성하는 방법에 대한 자세한 내용은 Methods That Modify Default Behavior 항목을 참조하십시오.

@ 및 경로 디렉터리와 네임스페이스를 사용하여 클래스 파일을 구성하는 방법에 대한 자세한 내용은 클래스 파일 구성 항목을 참조하십시오.

둘 이상의 파일에서 클래스를 정의할 때 사용할 구문은 개별 파일 내 메서드 항목을 참조하십시오.

메서드 종류

특정 함수를 수행하거나 특정하게 동작하는 특화된 종류의 메서드가 있습니다.

  • 일반 메서드는 하나 이상의 객체에 대해 동작하고 새 객체나 계산된 값을 반환하는 함수입니다. 이러한 메서드는 입력 인수를 수정할 수 없는 일반 MATLAB 함수와 같습니다. 일반 메서드를 사용하면 클래스가 산술 연산자와 계산 함수를 구현할 수 있습니다. 이러한 메서드에는 연산을 수행할 대상인 클래스 객체가 필요합니다. Ordinary Methods를 참조하십시오.

  • 생성자 메서드는 클래스의 객체 생성에 특화된 메서드입니다. 생성자 메서드는 클래스와 동일한 이름을 가져야 하고 일반적으로 입력 인수에서 가져온 데이터로 속성값을 초기화합니다. 클래스 생성자 메서드는 하나 이상의 출력 인수를 선언해야 하며, 이 출력 인수가 생성되는 객체에 해당합니다. 항상 첫 번째 출력값이 생성되는 객체입니다. 클래스 생성자 메서드 항목을 참조하십시오.

  • 소멸자 메서드는 객체가 소멸될 때 자동으로 호출됩니다. 예를 들어, delete(object)를 호출하거나 객체에 대한 참조가 더 이상 없는 경우 호출됩니다. 핸들 클래스 소멸자 항목을 참조하십시오.

  • 속성 액세스 메서드는 속성값이 쿼리되거나 설정될 때마다 실행할 코드를 클래스에서 정의할 수 있도록 해줍니다. 속성 get 및 set 메서드 항목을 참조하십시오.

  • 정적 메서드는 클래스와 연결되는 함수이지만, 반드시 그 클래스 객체에 대해 연산을 수행하지는 않습니다. 이 메서드는 호출되는 동안 클래스의 인스턴스를 참조할 필요는 없지만, 일반적으로 그 클래스와 관련된 특정 방식으로 연산을 수행합니다. 정적 메서드 항목을 참조하십시오.

  • 변환 메서드는 다른 클래스로부터 오버로드된 생성자 메서드로서, 클래스가 자신의 객체를 오버로드된 생성자의 클래스로 변환하도록 해줍니다. 예를 들어, 클래스가 double 메서드를 구현하면 double형 클래스 생성자 대신에 이 메서드가 호출되어 클래스 객체를 MATLAB double형 객체로 변환합니다. 자세한 내용은 Object Converters 항목을 참조하십시오.

  • 추상 메서드는 자체적으로 인스턴스화될 수는 없지만 수많은 서브클래스가 사용하는 공통의 인터페이스를 정의하는 역할을 하는 클래스를 정의합니다. 추상 메서드를 포함하는 클래스는 인터페이스라고도 합니다. 자세한 내용과 예제는 추상 클래스 및 클래스 멤버 항목을 참조하십시오.

메서드 명명

메서드를 구현하는 함수의 이름은 메서드가 다음 중 하나인 경우에만 점을 포함할 수 있습니다(예: set.PropertyName).

속성 액세스 메서드와 변환 메서드는 로컬 함수 또는 중첩 함수로 정의할 수 없으며, 자체 파일에 개별적으로 정의할 수 없습니다. 클래스 생성자와 네임스페이스로 범위 설정된 함수는 함수 정의문에서 비정규화된 이름을 사용해야 합니다. 함수 정의문에 네임스페이스 이름을 포함시키지 마십시오.

관련 항목