추상 클래스의 차이점은 인터페이스와 비슷하지만 OOP의 초보자에게는 다소 혼란 스럽습니다.

Anonim

와 비슷하게 보입니다. 추상 클래스는 인터페이스와 비슷하지만 OOP의 초보자에게는 다소 혼란 스럽습니다. 개념적으로 추상 클래스는 구현이없는 인터페이스처럼 보이지만 차이는 상당히 공평합니다. 추상 클래스는 부분적으로 또는 완전히 구현 될 수 있지만 인터페이스는 완전히 구현되어야합니다. 두 클래스의 가장 큰 차이점은 추상 클래스는 기본 구현을 가질 수 있지만 인터페이스는 멤버 선언 만 포함하는 메소드 정의에 불과하다는 것입니다. 두 이론의 이론적 측면에 대해 자세히 살펴 보겠습니다.

추상 클래스 란 무엇입니까? 추상 클래스는 다른 클래스의 기본 클래스로 사용되며 인스턴스화 할 수없는 특별한 유형의 클래스입니다. 추상 클래스의 구현 논리는 파생 클래스에 의해 제공됩니다. 클래스를 추상화하려면 "추상"수정자를 사용합니다. 이는 누락 된 구현을 파생 된 클래스에서 구현해야 함을 의미합니다. 여기에는 추상적 멤버와 비 추상적 멤버가 모두 포함됩니다. abstract 클래스는, 복수의 파생 클래스에 의해 공유 및 오버라이드 (override)되는 기본적인 기능을 제공하기위한 클래스입니다. 어떤 종류의 코드 중복도 피하는 것이 유용합니다. 그들은 인터페이스와 매우 흡사하지만 기능이 추가되었습니다.

인터페이스 란 무엇입니까?

인터페이스는 기능의 서명 만 포함하는 클래스가 아닙니다. 구현이없는 패턴입니다. 개념적으로 말하자면, 멤버의 선언 만 포함하는 메서드 정의입니다. 그것은 멤버의 구현을 포함하지 않는 빈 쉘입니다. 이것은 메소드, 이벤트, 인덱서, 프로퍼티 등과 같은 추상 멤버만을 포함하는 추상 기본 클래스와 같습니다. 직접 인스턴스화 할 수 없으며 멤버를 모든 클래스에서 구현할 수 있습니다. 또한 여러 인터페이스는 클래스에서 구현할 수 있지만 클래스는 하나의 클래스 만 상속 할 수 있습니다.

추상 클래스와 인터페이스: C #에서 추상 클래스와 인터페이스의 차이

다중 상속

- 클래스는 하나의 추상 클래스 만 사용할 수 있으므로 다중 상속은 지원되지 않습니다. 반면에 인터페이스는 다중 상속을 지원할 수 있습니다. 즉, 클래스가 상속의 수를 상속 할 수 있습니다.

  1. C99에서 추상 클래스와 인터페이스 의 정의
  2. - 추상 클래스는 구현이없는 정의를 포함 할 수있는 특별한 유형의 클래스입니다. 구현 로직은 파생 클래스에 의해 제공됩니다. 그것은 추상과 비 추상적 인 방법을 가질 수 있습니다.반면에 인터페이스는 아무 것도 할 수없는 패턴 일뿐입니다. 엄밀히 말하면, 그것은 단지 비어있는 껍질입니다. 구현 - 추상 클래스는 정의와 구현을 모두 포함 할 수있다. 인스턴스화 할 수없는 불완전한 클래스입니다. 인터페이스는 코드없이 기능의 서명 만 가질 수 있습니다. Access Modifiers - 추상 클래스는 서브, 함수, 프로퍼티 등과 같은 여러 접근 수정자를 가질 수있는 반면, 인터페이스는 접근 수정자를 가질 수 없으며 모든 메소드는 암시 적으로 public으로 정의되어야한다. 동질성 (homogeneity) - 추상 유형은 동일한 유형, 행동 및 상태의 구현에 사용되는 반면 인터페이스는 메소드 서명 만 공유하는 구현에 사용됩니다. 선언문 - 추상 클래스는 다른 모든 클래스의 기본 클래스 역할을하므로 인터페이스가 어떤 변수도 선언 할 수없는 동안 모든 변수를 선언하거나 사용할 수 있습니다.
  3. 생성자 선언 - 추상 클래스는 생성자 선언을 가질 수 있지만 인터페이스는 생성자 선언을 가질 수 없습니다.
  4. Core v Peripheral - 추상 클래스는 클래스의 핵심 신원을 정의하는 데 사용되며 동일한 데이터 유형의 객체에 사용될 수 있습니다. 반면에 인터페이스는 클래스의 주변 기능을 정의하는 데 사용됩니다. Rigid vs. Supple
  5. - 추상 클래스는 최소한 개발자의 관점에서 볼 때 인터페이스 측면에서보다 유연한 기능면에서보다 유연합니다. 추상 클래스 대 인터페이스: 표 형식
  6. 추상 클래스 인터페이스
  7. 추상 클래스는 함수, 서브 및 프로퍼티의 멤버 선언을위한 모든 액세스 수정자를 가질 수있다. 인터페이스는 함수, 서브 시스템, 프로퍼티 등등의 멤버 선언을위한 접근 수정자를 가질 수 없다. 모든 멤버는 암시 적으로 public으로 간주된다. 클래스는 최대 하나의 추상 클래스 만 사용할 수 있습니다. 클래스는 임의의 수의 인터페이스를 상속 할 수 있습니다.
  8. 추상 상속에서는 다중 상속이 지원되지 않습니다. 인터페이스는 다중 상속을 지원할 수 있습니다.
<
  • 인터페이스는 기능의 서명 만 가질 수 있으므로 기본적으로 빈 쉘입니다. 추상 클래스에는 멤버가 포함될 수 있습니다. consts, 정의 된 메소드 및 메소드 스텁. 인터페이스는 메소드와 const 만 포함 할 수 있습니다.
  • 클래스의 핵심 신원을 정의하며 동일한 데이터 유형의 객체를 설명하는 데 사용됩니다.

    클래스의 주변 능력을 설명하는 데 사용됩니다.

    추상 클래스의 멤버는 완전한 멤버가 아니면 정적 일 수 없습니다.

    인터페이스의 멤버는 정적 일 수 없습니다. 동일한 종류 및 공통적 인 동작을 구현하는 데 이상적입니다.
    여러 구현이 메소드 서명 만 공유하는 경우 인터페이스를 사용하는 것이 좋습니다. 생성자 선언을 가질 수 있습니다.
    생성자 선언을 가질 수 없습니다. 추상 클래스에는 미리 정의 된 필드와 제한자가 있습니다. 인터페이스에서 필드를 정의 할 수 없습니다.
    추상 메소드와 비 추상 메소드를 모두 가질 수 있습니다. 추상 메소드 만 가질 수 있습니다.
    요약 추상 클래스와 인터페이스의 차이점은 무엇입니까? 이는 아마도 기술 인터뷰에서 가장 많이 묻는 질문 중 하나 일 것입니다. C # 튜토리얼에서 추상 클래스와 인터페이스에 대한 많은 정보를 찾을 수는 있지만, 두 클래스의 차이를 이해하는 것은 상당히 어려운 부분입니다. 찾을 수 있고 여전히 얻을 수없는 모든 정보를 통합 할 수 있습니다. 개념적으로 프로그래밍에서 가장 중요한 용어는 개념적으로 동일하지만 기능면에서 많이 다릅니다. 추상 클래스는 다른 클래스의 기본 클래스로 사용되는 특별한 유형의 클래스이지만 인터페이스는 멤버 선언 만있는 빈 쉘입니다.