Haskell을 배우는 동안 Haskell에서 비롯된 훌륭한 발명품 인 클래스 클래스를 발견했습니다 .
그러나 클래스 유형의 Wikipedia 페이지에서 :
프로그래머는 클래스에 속하는 모든 유형에 대해 존재해야하는 함수 또는 상수 이름 세트를 해당 유형과 함께 지정하여 유형 클래스를 정의합니다.
나에게 Java의 인터페이스 에 다소 가까운 것 같습니다 ( Wikipedia의 Interface (Java) 페이지 인용 ).
Java 프로그래밍 언어의 인터페이스는 클래스가 구현해야하는 인터페이스 (일반적인 의미에서)를 지정하는 데 사용되는 추상 유형입니다.
이 두 가지는 다소 비슷해 보입니다. 유형 클래스는 유형의 동작을 제한하는 반면 인터페이스는 클래스의 동작을 제한합니다.
Haskell의 유형 클래스와 Java의 인터페이스 간의 차이점과 유사점이 무엇인지 궁금합니다. 아니면 근본적으로 다른 것일까 요?
편집 : 나는 심지어 haskell.org가 그들이 비슷하다는 것을 인정한다는 것을 알았습니다 . 그들이 그렇게 비슷하다면 (또는 그들이 있습니까?), 왜 타입 클래스가 그러한 과장으로 취급됩니까?
추가 편집 : 와우, 너무 많은 훌륭한 답변이 있습니다! 커뮤니티가 어느 것이 가장 좋은지 결정하도록해야 할 것 같습니다. 그러나 대답을 읽는 동안 그들 모두는 "인터페이스가 제네릭에 대처할 수 없거나 대처해야하는 동안 typeclass가 할 수있는 많은 일이있다"고만 말하는 것처럼 보입니다 . 나는 도울 수 없지만 궁금해 할 수 있습니다. 유형 클래스가 할 수없는 동안 인터페이스가 할 수있는 것이 있습니까? 또한 Wikipedia에서 typeclass가 원래 1989 년 논문 * "임시 다형성을 덜 임시로 만드는 방법"에서 발명되었다고 주장하는 반면 Haskell은 여전히 요람에 있으며 Java 프로젝트는 1991 년에 시작되어 1995 년에 처음 출시되었습니다. 그래서 아마도 typeclass가 인터페이스와 유사한 대신에, 그 반대의 경우 인터페이스가 typeclass의 영향을 받았습니까?이를 뒷받침하거나 반박하는 문서 / 문서가 있습니까? 모든 답변에 감사드립니다. 그들은 모두 매우 깨달았습니다!
모든 입력에 감사드립니다!