믹스 인이란 무엇입니까?
컴퓨터 프로그래밍에서 Mixin은 다른 클래스에 의해 상속되지만 인스턴스화되지 않는 클래스입니다. 단일 클래스는 많은 믹스 인을 물려받을 수 있으므로 많은 기능 컬렉션을 쉽게 통합 할 수 있습니다. 많은 일반적인 프로그래밍 언어가 Mixin 방법론을 사용하지만 C ++ 및 Java를 포함하여 더 많은 것이 없습니다. 일반적으로 Mixins는 스크립팅 언어 또는 JavaScript 및 Perl과 같은 스크립트를 만들 수있는 언어로 발견됩니다.
Mixin은 컴파일 동안 서브 클래스의 일부가된다는 점에서 독특합니다. 그들의 방법과 상수는 서브 클래스에 포함됩니다. Mixin 클래스의 또 다른 독특한 특성은 방법을 정의하고 런타임에 객체에 결합 할 수 있다는 것입니다. 대부분의 언어는 런타임이 아닌 컴파일 시간에 다른 접근법, 바인딩 및 정의 방법을 사용합니다. 이 런타임 바인딩은 Mixins가 매우 유연하게 가능합니다.
일반적인 문제다중 상속에서 EM은 방법 호출의 모호성이며, Mixins는 다중 상속과 동일한 규칙을 따르지 않기 때문에이 문제를 해결할 수 있습니다. 예를 들어, 다중 상속은 소위 "죽음의 다이아몬드"를 만들 수 있는데, 여기서 부모 클래스 A는 서브 클래스 B와 C가 있고 클래스 D는 클래스 B와 C를 모두 상속합니다.이 시나리오의 문제는 클래스 A, B 및 C에서 동일한 이름을 갖는 메소드를 클래스 D에 상속받을 수 있으며, 동일한 메소드의 여러 버전을 명확하게 구별 할 수 있습니다. Mixins는 표준 다중 상속에서와 같이 이들을 덮어 쓰지 않고 각 버전의 방법을 구별 하여이 문제를 해결합니다.
믹스 인은 상속 된 클래스에서 방법을 무시하지 않습니다. 예를 들어, 클래스 A가 메소드를 "mymethod"로 정의하고 "mymethod"를 정의한 Mixin B를 상속 한 경우,이 두 가지 방법은 여전히 모호함없이 호출 될 수 있으며 클래스 A에서 "mymethod"의 구현이 가능합니다.여전히 완전히 접근 할 수 있습니다. 이러한 방법이 어떻게 호출되는지 정확히 믹스 인이 구현되는 언어에 따라 다릅니다.
Java와 같이 Mixins를 사용하지 않는 일부 프로그래밍 언어는 인터페이스를 사용하여 모방합니다. 인터페이스에는 상수와 메소드 선언 만 포함 할 수 있기 때문에 이러한 언어의 인터페이스는 Mixins의 전체 기능을 모방하지 않습니다. 반면에 Mixins는 완전한 방법을 포함 할 수 있습니다. 믹스 인을 지원하지 않는 언어는 종종 거의 같은 일을하기 위해 동축 될 수있는 실행 가능한 대안을 가지고 있습니다.