여러 개의 클래스를 서브클래스화하기
여러 개의 슈퍼클래스 지정하기
여러 클래스에서 상속하는 경우라면 &
문자를 사용하여 슈퍼클래스의 결합을 나타내십시오.
classdef ClassName < SuperClass1 & SuperClass2
클래스 구문에 대한 자세한 내용은 서브클래스 구문 항목을 참조하십시오.
클래스 멤버 호환성
여러 개의 슈퍼클래스에서 파생된 서브클래스를 만들면 그 서브클래스는 지정된 모든 슈퍼클래스가 정의한 속성, 메서드 및 이벤트를 상속합니다. 두 개 이상의 슈퍼클래스가 같은 이름을 가진 속성, 메서드 또는 이벤트를 정의하는 경우 여러 정의를 모호하지 않게 하는 방법이 있어야 합니다. 호환되지 않는 클래스 멤버를 정의하는 두 개 이상의 클래스로부터 서브클래스를 파생할 수 없습니다.
다음과 같은 다양한 상황에서 이름과 정의 충돌을 해결할 수 있습니다.
속성 충돌
두 개 이상의 슈퍼클래스가 같은 이름을 가진 속성을 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.
모든 속성 또는 속성 중 하나를 제외한 모든 속성의
SetAccess
특성과GetAccess
특성이private
으로 설정되어 있어야 합니다.모든 슈퍼클래스에서 속성의 정의가 같습니다(예: 모든 슈퍼클래스가 공통된 기본 클래스에서 속성을 상속한 경우).
메서드 충돌
두 개 이상의 슈퍼클래스가 같은 이름을 가진 메서드를 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.
정의하는 슈퍼클래스만 메서드에 액세스할 수 있도록 메서드의
Access
특성이private
입니다.모든 서브클래스에서 메서드의 정의가 같습니다. 이 상황은 모든 슈퍼클래스가 공통된 기본 클래스에서 메서드를 상속하고 어떤 슈퍼클래스도 상속된 정의를 재정의하지 않는 경우 발생할 수 있습니다.
모든 슈퍼클래스에 있는 해당 메서드에 대한 여러 개의 정의가 모호해지지 않도록 서브클래스가 메서드를 재정의합니다. 따라서 슈퍼클래스 메서드의
Sealed
특성이true
로 설정되지 않아야 합니다.하나의 슈퍼클래스만 메서드를
Sealed
로 정의합니다. 이 경우 서브클래스는 이 봉인 메서드 정의를 취합니다.슈퍼클래스들은 메서드를
Abstract
로 정의하고, 이 메서드를 정의하는 서브클래스에 의존합니다.
이벤트 충돌
두 개 이상의 슈퍼클래스가 같은 이름을 가진 이벤트를 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.
이벤트의
ListenAccess
특성과NotifyAccess
특성이private
이어야 합니다.모든 슈퍼클래스에서 이벤트의 정의가 같습니다(예: 모든 슈퍼클래스가 공통된 기본 클래스에서 이벤트를 상속한 경우).
다중 상속
여러 클래스로부터 파생되는 하나의 서브클래스를 정의할 때 이와 관련된 잠재적인 충돌을 해결하다 보면 이 접근 방식 자체의 가치가 감소하는 경우가 많습니다. 예를 들어, 향후 버전에서 슈퍼클래스를 확장할 때 문제가 발생하고 새로운 충돌이 야기될 수 있습니다.
제한 없는 슈퍼클래스를 하나만 구현하여, 발생할 수 있는 문제를 줄이십시오. 다른 모든 슈퍼클래스에서는 모든 메서드가 다음과 같습니다.
추상
서브클래스에 의해 정의됨
제한 없는 슈퍼클래스에서 상속됨
다중 상속을 사용할 때는 모든 슈퍼클래스의 정의에 충돌이 없는지 확인하십시오.