2017-02-09 1 views
0

Python-Mixin에 대해 읽었으며 클래스에 몇 가지 기능 (메소드)이 추가되었음을 알게되었습니다. 마찬가지로 Java-Interfaces도 클래스에 대한 메서드를 제공합니다.Java 인터페이스와 Python Mixin의 차이점은 무엇입니까?

차이점은 내가 볼 수있는 것은 Java-interfaces은 추상적 인 방법이며 Python-Mixin 구현을 수행한다는 것입니다.

다른 점은 무엇입니까?

+1

스타터 용 : mixins carry ** 구현 **. 인터페이스는 인터페이스만을 기술합니다. –

+0

@WillemVanOnsem 예. 하지만 전반적인 목적은 두 클래스가 특정 클래스에 특정 기능을 추가하는 것과 같습니다. 권리 ? –

+0

mixins에서 읽은 내용을 기반으로하지 않습니다. 예를 들어 믹스 인은 패치 코드에는 인기가 있지만 인터페이스는 분명히 코드를 패치 할 수 없습니다. –

답변

1

글쎄, '추상적 인 방법'부분은 매우 중요합니다.

Java는 강력하게 입력됩니다. 유형 정의에 인터페이스를 지정하여이를 사용하여 새 유형의 특성을 구성합니다. 유형 정의 후에,이 새로운 유형 (또는 일부 부속 클래스)이 사용자가 지정한 다양한 인터페이스에 정의 된 모든 기능을 구현할 것이라고 약속했습니다.

따라서 인터페이스는 메소드 구현을 제공하지 않으므로 실제로 클래스에 메소드를 추가하지 않습니다. 그것은 단지 클래스의 서명/약속에 추가됩니다.

그러나 파이썬은 강력하게 형식화되지 않습니다. 유형의 '서명'은 실제로는 런타임에 호출하려는 메소드가 실제로 존재하는지 여부를 확인하기 때문에 중요하지 않습니다.

따라서 파이썬에서 믹스 인은 실제로 클래스에 메소드와 기능을 추가하는 것에 관한 것입니다. 형식 서명과 전혀 관련이 없습니다. 요약

:

  • 자바 인터페이스 -> 기능이 추가되지 않습니다, 서명이 연장됩니다.
  • Python mixins -> 함수가 추가되었습니다. 서명은 중요하지 않습니다.
관련 문제