[language-agnostic] 유형과 클래스의 차이점은 무엇입니까?

유형이 클래스와 다른 이유는 무엇입니까?

(일반적인 언어 불가지론 적 의미에서)



답변

다음 답변은 Gof 책 ( 디자인 패턴 ) 에서 가져온 것입니다.

객체의 클래스 는 객체가 구현되는 방법을 정의합니다. 클래스는 객체의 내부 상태와 작업의 구현을 정의합니다.

반대로 객체의
유형 은 응답 할 수있는 요청 집합 인 인터페이스 만 참조합니다.

객체는 여러 유형을 가질 수 있고 다른 클래스의 객체는 동일한 유형을 가질 수 있습니다.

//example in c++
template<typename T>
const T & max(T const & a,T const &b)
{
return a>b?a:b;  //> operator of the type is used for comparison
}

max 함수에는 해당 클래스에 대한 특정 max 함수를 생성하는 데 사용할 수있는 위의 요구 사항을 충족하는 모든 클래스가 인터페이스 중 하나로 자체 유형이있는 > 작업 유형이 필요합니다 .


답변

나는 항상 ‘유형’을 ‘클래스’와 ‘원시’의 포괄적 용어로 생각합니다.

int foo; // Type is int, class is nonexistent.

MyClass foo; // Type is MyClass, class is MyClass


답변

Wikipedia에서 영감을 얻음

에서 유형 이론 용어;

  • 유형 추상적 인 인터페이스입니다.
    유형은 일반적으로 사람, 장소 또는 사물 또는 명사화 된 것과 같은 명사를 나타냅니다.

  • 클래스 유형의 구현을 나타냅니다.
    구체적인 데이터 구조와 서브 루틴 모음입니다.

    서로 다른 구체적인 클래스는 동일한 추상 유형의 객체를 생성 할 수 있습니다 (유형 시스템에 따라 다름).

    * 예를 들어 두 개의 클래스로 유형 Stack 을 구현할 수 있습니다 .SmallStack (작은 스택의 경우 빠르지 만 제대로 확장되지 않음)ScalableStack (물론 스케일하지만 작은 스택에 대한 높은 오버 헤드) *.

    유사하게, 주어진 클래스는 여러 다른 생성자를 가질 수 있습니다 .

여기에 이미지 설명 입력

바나나 예.

  • Banana 유형은 일반적으로 바나나의 특성과 기능을 나타내는 것입니다.

  • ABCBananaXYZBanana 클래스는 생산 바나나의 방법을 나타내는 것입니다.
    (실생활에서 다른 바나나 공급자 또는 비디오 게임에서 바나나를 표현하고 그리는 다른 데이터 구조 및 기능).

    ABCBanana클래스는 다음이다 특히 바나나를 생산할 수있는
    인스턴스ABCBanana 클래스를 , 그들은 것 오브젝트유형 바나나 .

프로그래머가 유형에 대한 단일 및 유일한 구현을 제공하는 것은 드문 일이 아닙니다. 이 경우 클래스 이름은 종종 유형 이름 과 동일합니다 . 그러나 여전히 유형 (필요한 경우 인터페이스에서 추출 할 수 있음)과 클래스의 인스턴스 (객체)를 빌드하는 구현 (별도의 인터페이스를 구현 함)이 있습니다.


답변

유형은 사용 가능한 모든 개체 템플릿 또는 개념에 대한 포괄적 인 용어입니다. 클래스는 이러한 개체 템플릿 중 하나입니다. 구조 유형, 정수 유형, 인터페이스 유형 등도 마찬가지입니다. 모두 유형입니다.

원하는 경우 다음과 같이 볼 수 있습니다. 유형은 상위 개념입니다. 다른 모든 개념 : 클래스, 인터페이스, 구조, 정수 등은이 개념에서 상속됩니다.


답변

아래의 GoF 인용에서 발췌 :

개체의 클래스 는 객체가 구현되는 방법을 정의합니다. 클래스는 객체의 내부 상태와 해당 작업의 구현을 정의합니다.

반대로 객체의
유형 은 응답 할 수있는 요청 집합 인 인터페이스 만 참조합니다.

Java를 사용하여 예제를 제공하고 싶습니다.

public interface IType {
}

public class A implements IType {
public A{};
}

public class B implements IType {
public B{};
}

두 클래스 AB인터페이스를 구현하고 유형입니다 때문에 IType. 또한 Java에서는 두 클래스 모두 자체 유형을 생성합니다 (각 클래스 이름에 따라). 따라서 클래스 A는 유형 A 이고 IType 클래스 B는 유형 B 이며 IType 만족합니다.

객체는 여러 유형을 가질 수 있고 다른 클래스의 객체는 동일한 유형을 가질 수 있습니다.

하위 유형과 하위 클래스의 차이점은 해당 문제를 이해하는 데 도움이 될 것입니다.

https://www.cs.princeton.edu/courses/archive/fall98/cs441/mainus/node12.html


답변

유형에는 데이터에 대한 설명 (예 : 속성, 작업 등)이 포함됩니다.

클래스는 특정 유형 입니다. 개체의 인스턴스를 만드는 템플릿 입니다.

엄밀히 말하면 클래스는 특별한 개념이며 객체의 일부 측면을 설명하는 메타 데이터의 하위 집합을 포함하는 패키지로 볼 수 있습니다 .

예를 들어 C #에서는 인터페이스와 클래스를 찾을 수 있습니다. 둘 다 유형이지만 인터페이스는 일부 계약 만 정의 할 수 있으며 클래스와 달리 인스턴스화 할 수 없습니다.

간단히 말해서 클래스 는 객체의 속성과 동작을 캡슐화하는 데 사용되는 특수 유형 입니다.

Wikipedia에서보다 완전한 답변을 얻을 수 있습니다.


답변

유형은 개념적으로 클래스의 상위 집합입니다. 넓은 의미에서 클래스는 유형의 한 형태입니다.

클래스와 밀접한 관련이있는 인터페이스는 매우 특별한 종류의 클래스-순전히 추상적 인 클래스로 볼 수 있습니다. 이것들도 유형입니다.

따라서 “유형”은 클래스, 인터페이스 및 대부분의 언어 기본 요소도 포함합니다. 또한 dot-net CLR과 같은 플랫폼에는 구조 유형도 있습니다.