Skip to main content

믹스 인이란 무엇입니까?

computer 컴퓨터 프로그래밍에서 Mixin은 다른 클래스에 의해 상속되지만 인스턴스화되지 않는 클래스입니다.단일 클래스는 많은 믹스 인을 물려받을 수 있으므로 많은 기능 컬렉션을 쉽게 통합 할 수 있습니다.많은 일반적인 프로그래밍 언어가 Mixin 방법론을 사용하지만 C ++ 및 Java를 포함하여 더 많은 것이 없습니다.일반적으로 Mixins는 스크립팅 언어 또는 JavaScript 및 Perl과 같은 스크립트를 만들 수있는 언어로 찾을 수 있습니다.

Mixins는 컴파일 중에 하위 클래스의 일부가된다는 점에서 독특합니다.그들의 방법과 상수는 서브 클래스에 포함됩니다.Mixin 클래스의 또 다른 독특한 특성은 방법을 정의하고 런타임에 객체에 결합 할 수 있다는 것입니다.대부분의 언어는 런타임이 아닌 컴파일 시간에 다른 접근법, 바인딩 및 정의 방법을 사용합니다.이 런타임 바인딩은 Mixins가 매우 유연하게 가능합니다.

다중 상속의 일반적인 문제는 방법 호출의 모호성이며, Mixins는 여러 상속과 동일한 규칙을 따르지 않기 때문에이 문제를 해결할 수 있습니다.예를 들어, 다중 상속은 소위 죽음의 다이아몬드를 만들 수 있습니다. 여기서 부모 클래스 A는 서브 클래스 B와 C가 있고 클래스 D는 클래스 B와 C 모두에서 상속됩니다.클래스 A, B 및 C의 이름은 모두 클래스 D에 상속 될 수 있으며, 명확한 구별없이 동일한 방법의 여러 버전을 만듭니다.믹스 인은 표준 다중 상속에서와 같이 이들을 덮어 쓰려고 시도하는 대신 각 버전의 방법을 구별 하여이 문제를 해결 함으로써이 문제를 해결합니다.예를 들어, 클래스 A가 메소드 MyMethod를 정의하고 메소드 MyMethod를 정의하는 Mixin B를 상속 한 경우,이 두 가지 방법은 여전히 모호함없이 호출 될 수 있으며 클래스 A에서 MyMethod의 구현은 여전히 완전히 액세스 할 수 있습니다.이러한 방법이 어떻게 호출되는지는 믹스 인이 구현되는 언어에 따라 다릅니다.인터페이스에는 상수와 메소드 선언 만 포함 할 수 있기 때문에 이러한 언어의 인터페이스는 Mixins의 전체 기능을 모방하지 않습니다.반면에 Mixins는 완전한 방법을 포함 할 수 있습니다.믹스 인을 지원하지 않는 언어는 종종 거의 같은 일을하기 위해 동축 될 수있는 실행 가능한 대안을 가지고 있습니다.