추상형

Abstract type

프로그래밍 언어에서 추상형은 직접 인스턴스화할 수 없는 주격형 시스템의 유형입니다. 즉, 인스턴스화할 수 있는 추상형이 아닌 유형을 구체적 유형이라고 합니다.추상형의 모든 인스턴스는 구체적인 하위 유형의 인스턴스입니다.추상형은 [1]실존형이라고도 합니다.

추상형은 구현을 제공하지 않거나 불완전한 구현을 제공할 수 있습니다.일부 언어에서는 구현이 완료되지 않은 추상 유형을 프로토콜, 인터페이스, 시그니처 또는 클래스 유형이라고 합니다.클래스 기반 객체 지향 프로그래밍에서 추상 유형은 추상 클래스(추상 기본 클래스라고도 함)로 구현되고 구체적인 유형은 구체적인 클래스로 구현됩니다.일반 프로그래밍에서 유사한 개념은 구문과 의미론을 유사하게 지정하지만 하위 유형 관계를 요구하지 않는 개념입니다. 두 개의 관련 없는 유형이 동일한 개념을 충족할 수 있습니다.

추상형에는 예를 들어 인스턴스화할 수 있는 구체적인 하위형 형태로 하나 이상의 구현이 별도로 제공되는 경우가 많습니다.객체 지향 프로그래밍에서 추상 클래스는 하위 클래스에 의해 공유되는 추상 메서드 또는 추상 속성[2] 포함할 수 있습니다.추상형 구현에 사용되는 언어 기능의 다른 이름으로는 특성, 혼합, 플레이버, 역할 또는 유형 [citation needed]클래스가 있습니다.

추상형 표시

추상 클래스는 여러 가지 방법으로 생성, 표시 또는 시뮬레이션할 수 있습니다.

  • explicit 키워드 사용 abstractJava, D 또는 C#과 같이 클래스 정의에서 사용됩니다.
  • 클래스 정의에 하나 이상의 추상 메서드(C++에서는 순수 가상 함수라고 함)를 포함시킴으로써 클래스가 프로토콜의 일부로 받아들이도록 선언되지만 구현이 제공되지 않습니다.
  • 추상 유형에서 상속하고 클래스 정의를 완료하는 데 필요한 누락된 모든 기능을 재정의하지 않음.즉, 부모로부터 모든 추상적 방법을 구현하지 않는 자식 유형은 [2][3]추상적 유형이 됩니다.
  • Smalltalk와 같은 많은 동적 유형의 언어에서는 특정 메서드를 전송하지만 해당 메서드를 구현하지 않는 클래스는 추상적인 것으로 간주할 수 있습니다.(단, Objective-C와 같은 많은 언어에서는 클래스가 사용될 때까지 오류가 검출되지 않고 "Does not recognect selector: xxx" 등의 예외 오류 메시지가 반환됩니다.- [NSObject doesNotRecognizeSelector:(SEL)selector]구현되지 않은 메서드가 검출되었을 때 호출됩니다).

예(Java)

//기본적으로 abstract 키워드를 사용하지 않는 한 모든 클래스의 메서드는 구체적입니다. 추상적인 학급 데모 {     // 추상 클래스에는 구현이 없는 추상 메서드가 포함될 수 있습니다.     추상적인 일반의 인트 (인트 x, 인트 y);      // 추상 클래스는 구체적인 메서드를 포함할 수도 있습니다.     일반의 인트 제품.(인트 x, 인트 y) { 돌아가다 x*y; } }  //디폴트로는 default 키워드를 사용하지 않는 한 모든 인터페이스의 모든 메서드는 추상적입니다. 인터페이스 데모 인터페이스 {     [추상적인] 인트 Get Length(); //추출은 여기서 사용할 수 있지만 전혀 쓸모가 없습니다.          //이 컨텍스트에서 default 키워드를 사용하여 인터페이스에서 구체적인 메서드를 지정할 수 있습니다.     체납 인트 제품.(인트 x, 인트 y) {         돌아가다 x * y;     } } 

추상형 사용

추상형은 정적 유형 OOP 언어에서 중요한 기능입니다.많은 동적 유형 언어에는 동등한 기능이 없습니다( 타이핑을 사용하면 추상형이 불필요해지지만). 그러나 일부 현대 동적 유형 [citation needed]언어에는 특성이 있습니다.

일부 저자는 클래스가 리프 클래스(하위 유형이 없음)이거나 [4][5]추상적이어야 한다고 주장한다.

추상형은 프로토콜을 정의하고 적용하는 데 사용할 수 있다는 점에서 유용합니다. 이 프로토콜은 프로토콜을 구현하는 모든 개체가 [citation needed]지원해야 하는 일련의 작업입니다.

추상형도 템플릿 메서드 패턴의 중요한 부분입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Mitchell, John C.; Plotkin, Gordon D.; 추상형은 존재형, ACM Transactions on Programming Language and Systems, Vol. 10, No. 3, 1988년 7월, 페이지 470–502.
  2. ^ a b "Abstract Methods and Classes (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)". Oracle.com. Retrieved 2019-08-14.
  3. ^ "Pure Virtual Functions and Abstract Classes in C++". GeeksforGeeks.org.
  4. ^ Riel, Arthur (1996). Object-Oriented Design Heuristics. Addison-Wesley Professional. p. 89. ISBN 0-201-63385-X.
  5. ^ Meyers, Scott (1996). More Effective C++. Addison-Wesley Professional. p. 258. ISBN 0-201-63371-X. Make non-leaf classes abstract

추가 정보

외부 링크

  • "추상 또는 골격 인터페이스 설명" [1]
  • Benjamin Pierce의 유형과 프로그래밍 언어 (MIT Press 2002) [2]
  • 로제타 코드의 추상형