Main Content

여러 개의 클래스를 서브클래스화하기

여러 개의 슈퍼클래스 지정하기

여러 클래스에서 상속하는 경우라면 & 문자를 사용하여 슈퍼클래스의 결합을 나타내십시오.

classdef ClassName < SuperClass1 & SuperClass2

클래스 구문에 대한 자세한 내용은 서브클래스 구문 항목을 참조하십시오.

클래스 멤버 호환성

여러 개의 슈퍼클래스에서 파생된 서브클래스를 만들면 그 서브클래스는 지정된 모든 슈퍼클래스가 정의한 속성, 메서드 및 이벤트를 상속합니다. 두 개 이상의 슈퍼클래스가 같은 이름을 가진 속성, 메서드 또는 이벤트를 정의하는 경우 여러 정의를 모호하지 않게 하는 방법이 있어야 합니다. 호환되지 않는 클래스 멤버를 정의하는 두 개 이상의 클래스로부터 서브클래스를 파생할 수 없습니다.

다음과 같은 다양한 상황에서 이름과 정의 충돌을 해결할 수 있습니다.

속성 충돌

두 개 이상의 슈퍼클래스가 같은 이름을 가진 속성을 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.

  • 모든 속성 또는 속성 중 하나를 제외한 모든 속성의 SetAccess 특성과 GetAccess 특성이 private으로 설정되어 있어야 합니다.

  • 모든 슈퍼클래스에서 속성의 정의가 같습니다(예: 모든 슈퍼클래스가 공통된 기본 클래스에서 속성을 상속한 경우).

메서드 충돌

두 개 이상의 슈퍼클래스가 같은 이름을 가진 메서드를 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.

  • 정의하는 슈퍼클래스만 메서드에 액세스할 수 있도록 메서드의 Access 특성이 private입니다.

  • 모든 서브클래스에서 메서드의 정의가 같습니다. 이 상황은 모든 슈퍼클래스가 공통된 기본 클래스에서 메서드를 상속하고 어떤 슈퍼클래스도 상속된 정의를 재정의하지 않는 경우 발생할 수 있습니다.

  • 모든 슈퍼클래스에 있는 해당 메서드에 대한 여러 개의 정의가 모호해지지 않도록 서브클래스가 메서드를 재정의합니다. 따라서 슈퍼클래스 메서드의 Sealed 특성이 true로 설정되지 않아야 합니다.

  • 하나의 슈퍼클래스만 메서드를 Sealed로 정의합니다. 이 경우 서브클래스는 이 봉인 메서드 정의를 취합니다.

  • 슈퍼클래스들은 메서드를 Abstract로 정의하고, 이 메서드를 정의하는 서브클래스에 의존합니다.

이벤트 충돌

두 개 이상의 슈퍼클래스가 같은 이름을 가진 이벤트를 정의하는 경우 다음 중 하나 이상을 충족해야 합니다.

  • 이벤트의 ListenAccess 특성과 NotifyAccess 특성이 private이어야 합니다.

  • 모든 슈퍼클래스에서 이벤트의 정의가 같습니다(예: 모든 슈퍼클래스가 공통된 기본 클래스에서 이벤트를 상속한 경우).

다중 상속

여러 클래스로부터 파생되는 하나의 서브클래스를 정의할 때 이와 관련된 잠재적인 충돌을 해결하다 보면 이 접근 방식 자체의 가치가 감소하는 경우가 많습니다. 예를 들어, 향후 버전에서 슈퍼클래스를 확장할 때 문제가 발생하고 새로운 충돌이 야기될 수 있습니다.

제한 없는 슈퍼클래스를 하나만 구현하여, 발생할 수 있는 문제를 줄이십시오. 다른 모든 슈퍼클래스에서는 모든 메서드가 다음과 같습니다.

  • 추상

  • 서브클래스에 의해 정의됨

  • 제한 없는 슈퍼클래스에서 상속됨

다중 상속을 사용할 때는 모든 슈퍼클래스의 정의에 충돌이 없는지 확인하십시오.

관련 항목