유형이 클래스와 다른 이유는 무엇입니까?
(일반적인 언어 불가지론 적 의미에서)
답변
다음 답변은 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
유형은 일반적으로 바나나의 특성과 기능을 나타내는 것입니다.
ABCBanana
및XYZBanana
클래스는 생산 바나나의 방법을 나타내는 것입니다.
(실생활에서 다른 바나나 공급자 또는 비디오 게임에서 바나나를 표현하고 그리는 다른 데이터 구조 및 기능).
ABCBanana
클래스는 다음이다 특히 바나나를 생산할 수있는
인스턴스 의ABCBanana
클래스를 , 그들은 것 오브젝트 의 유형 바나나 .
프로그래머가 유형에 대한 단일 및 유일한 구현을 제공하는 것은 드문 일이 아닙니다. 이 경우 클래스 이름은 종종 유형 이름 과 동일합니다 . 그러나 여전히 유형 (필요한 경우 인터페이스에서 추출 할 수 있음)과 클래스의 인스턴스 (객체)를 빌드하는 구현 (별도의 인터페이스를 구현 함)이 있습니다.
답변
유형은 사용 가능한 모든 개체 템플릿 또는 개념에 대한 포괄적 인 용어입니다. 클래스는 이러한 개체 템플릿 중 하나입니다. 구조 유형, 정수 유형, 인터페이스 유형 등도 마찬가지입니다. 모두 유형입니다.
원하는 경우 다음과 같이 볼 수 있습니다. 유형은 상위 개념입니다. 다른 모든 개념 : 클래스, 인터페이스, 구조, 정수 등은이 개념에서 상속됩니다.
답변
아래의 GoF 인용에서 발췌 :
개체의 클래스 는 객체가 구현되는 방법을 정의합니다. 클래스는 객체의 내부 상태와 해당 작업의 구현을 정의합니다.
반대로 객체의
유형 은 응답 할 수있는 요청 집합 인 인터페이스 만 참조합니다.
Java를 사용하여 예제를 제공하고 싶습니다.
public interface IType {
}
public class A implements IType {
public A{};
}
public class B implements IType {
public B{};
}
두 클래스 A
및 B
인터페이스를 구현하고 유형입니다 때문에 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과 같은 플랫폼에는 구조 유형도 있습니다.