mixIn

존스노우·2022년 7월 8일
0

JAVA

목록 보기
1/5

자바를 공부하면서 믹스인 인터페이스를 알게 되었다

현재 까지 내가 이해한 내용은

두개에 다른 동작을 하는 인터페이스가 있으면

하나로 합쳐서 (다중 상속) 으로 하나의 새로운 인터페이스를만들어
(인터페이스는 다중상속 제한이없어서 구현하기 용이하다)

대상 타입의 주된 기능(필요한 기능만)을
(혼합)한다는 의미로 믹스인이라 불린다.

여기까지 내가 알고 있는 개념이다.

믹스인 정의

위키에 따르면

믹스인은
프로그래머가 일부 코드를 클래스에 주입할 수 있도록 하는 언어 개념입니다.
Mixin 프로그래밍은 기능 단위가 클래스에서 생성된 다음 다른 클래스와 혼합되는 소프트웨어 개발 스타일입니다.

특징 및 설명(이점)

  1. 추가로 원하는 기능을 포함하는 부모 클래스 역할을 한다.

  2. Is-a 관계가 아니라 has-a관계 로서
    B(자식클래스) 는 A(부모클래스) 이다. 상속 개념이 아닌.
    B 는 A를 가지고 있다는 개념으로 하위 클래스가 상위 클래스를
    가지고 있다는 개념

  3. 기능을 상속하면서 재사용이 가능.

  4. 한 클래스가 여러 클래스의 기능을 사용할 수 있도록
    다중 상속 메커니즘 제공한다.

  5. 그래서 공통 기능을 간단히 믹스인으로 그룹화하고
    필요로하는 클래스에 포함시킨다.

    ex)

다른 블로그에서 퍼온건대 가장 적절한 예시 같아서 추가함.

  1. 믹스인을 사용하면 부모클래스의 모든 기능이 반드시 필요한 것은
    아니며 부모클래스에서 원하는 기능만 상속하고 사용.

상속 개념과 같이보면 상속의 단점을 보완한 개념인걸 알 수 있다.

위키 예시에선

JAVA 8 - Default Method가 믹스인을 사용한다고 적혀져 있다.

믹스인 정리

코드 처럼 Has - A
컴포지션 코드를 보면 Point 부모 객체를 소유 함으로서
원하는 기능만 쓸 수 있고
다른 기능이 필요하면 해당 기능이 있는
객체를 추가함으로서(Mixin)
해당 기능을 쓸수 있다.

그리고 부모 객체에 종속된 것이 아닌 소유 임으로
부모 객체가 변하더라도 자식 객체는 영향이 없다.

컴포지션 개념이랑 유사한 거 같다.

컴포지션이란 ?

클래스 간에 포함(composite) 관계를 맺어주는 것
즉, 한 클래스의 멤버변수로 다른 클래스 타입의 참조 변수를 선언하는 것을 의미한다.

출처 : https://ssimplay.tistory.com/564
https://en.wikipedia.org/wiki/Mixin

profile
어제의 나보다 한걸음 더

0개의 댓글