Main Content

classdef

클래스 정의 키워드

구문

classdef (Attributes) ClassName < SuperclassNames
    properties (Attributes) ... end
    methods (Attributes) ... end
    events (Attributes) ... end
    enumeration ... end
end

설명

classdef ... end는 클래스 정의를 둘러쌉니다. classdef 블록의 첫 번째 행의 구문은 다음과 같습니다.

classdef (Attribute1 = value1, Attribute2 = value2,...) ClassName < 
SuperclassName1 & SuperclassName2 & ...

  • (Attribute1 = value1, Attribute2 = value2,...) — 선택적 클래스 특성으로, 특성 이름과 관련 값이 쉼표로 구분된 목록으로 지정됩니다. 예를 들어 다음 구문은 제한된 목록을 허용하는 서브클래스를 포함한 추상 클래스를 정의합니다.

    classdef (Abstract = true, AllowedSubclasses = {ClassA, ClassB}) exampleClass

    논리값을 취하는 특성은 명시적 값 없이도 사용할 수 있습니다. 이전 예에서 명시적 값 없이 Abstract를 지정하면 특성이 true로 설정됩니다. 자세한 내용은 클래스 특성 항목을 참조하십시오.

  • ClassName — 유효한 클래스 이름은 영문자로 시작하고 영문자, 숫자, 밑줄을 포함할 수 있습니다. 클래스와 동일한 이름의 파일에 클래스를 저장하고 파일 확장자를 .m으로 지정합니다.

  • SuperclassName1 & SuperclassName2 & ... — 슈퍼클래스 목록으로, & 문자로 구분됩니다. 다른 클래스에서 클래스를 파생하는 방법에 대한 자세한 내용은 서브클래스 정의 항목을 참조하십시오.

classdef 블록은 다음과 같은 클래스 멤버 블록을 하나 이상 포함할 수 있습니다.

  • Properties properties (Attributes) ... end는 속성 블록을 정의합니다. 클래스 정의는 여러 개의 속성 블록을 포함할 수 있으며, 그 특정 블록의 속성에 적용되는 서로 다른 특성 설정을 지정합니다. 속성 구문에 대한 자세한 내용은 속성 구문 항목을 참조하십시오.

  • Methods methods (Attributes) ... end는 메서드 블록을 정의합니다. 클래스 정의는 여러 개의 메서드 블록을 포함할 수 있으며, 지정된 서로 다른 특성 설정은 이 특정 블록의 메서드에 적용됩니다. 메서드 구문에 대한 자세한 내용은 클래스 메서드와 함수 정의하기 항목을 참조하십시오.

  • Events events (Attributes) ... end는 이벤트 블록을 정의합니다. 클래스 정의는 여러 개의 이벤트 블록을 포함할 수 있으며, 지정된 서로 다른 특성 설정은 이 특정 블록의 이벤트에 적용됩니다. 이벤트 구문에 대한 자세한 내용은 이벤트와 리스너 구문 항목을 참조하십시오.

  • Enumeration enumeration ... end는 열거형 블록을 정의합니다. 열거형 클래스 정의에 대한 자세한 내용은 열거형 클래스 정의하기 항목을 참조하십시오.

예제

모두 축소

Motor 클래스는 전기 자동차의 현재 속도를 저장하고, 모터 시작과 중지를 위한 기본 기능을 제공합니다. 이 클래스는 ElectricVehicleComponent 슈퍼클래스에서 상속되고, 속성 블록과 메서드 블록을 포함합니다.

classdef Motor < ElectricVehicleComponent
   
    properties
        CurrentSpeed = 0
        SpeedRange = [0, 180]
    end

    methods
        function motor = start(motor,speed)
            arguments
                motor (1,1) Motor
                speed (1,1) {mustBeReal, mustBeNonnegative}
            end
            if motor.CurrentSpeed > 0
                error("Motor:start:MotorAlreadyRunning",...
                    "Cannot start a motor that is already running.")
            end
            motor.CurrentSpeed = speed;   
        end
        
        function motor = stop(motor)
            if motor.CurrentSpeed == 0
                error("Motor:start:MotorNotRunning",...
                    "Cannot stop a motor that is not running.")
            end
            motor.CurrentSpeed = 0;
        end
    end
end

  • classdef 앞에는 빈 라인과 주석만 먼저 나올 수 있습니다.

  • 클래스 정의 파일은 MATLAB® 경로의 폴더에 있거나 부모 폴더가 MATLAB 경로에 있는 클래스 폴더에 있을 수 있습니다. 클래스 폴더의 이름은 @ 문자로 시작하고, 그 뒤에 클래스 이름이 옵니다(예: @MyClass). 클래스 폴더에 대한 자세한 내용은 클래스 정의를 포함하는 폴더 항목을 참조하십시오.

  • properties, methods, events, enumeration은 또한 지정된 객체 또는 클래스 이름에 대한 각 클래스 멤버를 쿼리하는 데 사용되는 MATLAB 함수의 이름입니다.

  • 속성의 이름은 정의하는 클래스의 이름과 동일할 수 없습니다.

  • 메서드는 메인 클래스 파일 이외의 파일 내에서 정의할 수 있습니다. 자세한 내용은 개별 파일 내 메서드 항목을 참조하십시오.

버전 내역

R2008a에 개발됨