C++에서 추상 류 와 인터페이스의 차이 점 에 대한 소개

1.만약 에 하나의 클래스 B 가 문법 적 으로 클래스 A 를 계승(extend)한다 면 의미 적 으로 클래스 B 는 하나의 클래스 A.2 이다.만약 에 하나의 클래스 B 가 문법 적 으로(implement)인터페이스 I 를 실현 한다 면 클래스 B 는 인터페이스 I 가 제정 한 협 의 를 따른다.
abstract class 를 사용 하 는 근본 적 인 원인 은 사람들 이 이러한 방식 을 통 해 서로 다른 차원 의 추상 을 표현 하 기 를 원 하 는 데 있다.한편,interface 의 본질 은 협의 이다.프로그램 디자인 의 발전 에서 사람들 은 인터페이스 가 행위 에 대한 추상 을 나 타 낼 수 있다 는 것 을 발견 했다.그러나 이것 은 interface 의 용법 일 뿐 그 본질 이 아니다.
이론 을 실제 와 결합 시 키 는 것 이 가장 좋 은 학습 방식 이다.그러나 여기 서 나 는 인터페이스 사용 에 관 한 부정적인 교 재 를 들 고 싶 을 뿐이다.1.인터페이스 에 데이터 구성원 을 포함 하 는 것 은 거의 잘못된 것 이다.협 의 는 규범 이 기준 이기 때문에 구체 적 인 실현 과 관련 이 있어 서 는 안 된다.구체 적 인 실현 에 어떠한 부담 도 주어 서 는 안 된다.2.C++에서 delete 는 인 터 페 이 스 를 떨 어 뜨 려 야 한다.예 를 들 어

class IInterface()
{
Public:
Virtual ~IInterface(){};

}

Class ClassImpl : public IInterface
{

}

Int main()
{
IInterface* pInterface = new ClassImpl();

delete pInterface;
}

문법 적 측면 과 언어 자체 의 측면 에서 볼 때 이것 은 가능 하 다.또한 인터페이스의 분석 함 수 를 virtual 로 설정 하면 메모리 누 출 을 피 할 수 있다.그러나 이것 은 문법 과 언어의 문제 가 아니다.인 터 페 이 스 는 하나의 프로 토 콜 이 고 하나의 규범 이기 때문에 실현 되 는 것 이 아 닙 니 다.Delete 인터페이스의 코드 는 도대체 어떤 의 미 를 표현 하고 싶 습 니까?만약 코드 가 의미 적 으로 말 이 통 하지 않 는 다 면 프로그램 에 나타 나 서 는 안 됩 니 다.C++에서 인터페이스의 개념 을 표현 하려 면 다음 과 같은 방법 입 니 다.

class IInterface
{
public:
virtual void DoSomething() = 0;
}

// , , delete .

delete 를 하려 면 delete 와 같은 인 스 턴 스 만 있 을 수 있 습 니 다.

Class A
{
Public:
Virtual ~A();

Public:
Virtual void DoSomething() = 0;
}
Class B : public A
{

}
Int main()
{
A* pA = new B();

Delete pA;
}

우 리 는 이렇게 할 수 있 습 니 다.pA 가 대응 하 는 것 은 하나의 인 스 턴 스 이기 때문에 우 리 는 A 층 에서 이 를 없 앨 수 있 습 니 다.먼저 예 를 들 어 이해 하기 편 합 니 다.그리고 예 에서 결 이론 을 추상 적 으로 요약 한다.예 를 들 어 문 을 생산 하 는 회 사 는 먼저 문의 양식 을 정의 하여 각종 규격 의 문 을 신속하게 생산 할 수 있 도록 해 야 한다.여기 템 플 릿 은 보통 두 가지 템 플 릿 이 있 습 니 다.추상 적 인 템 플 릿 과 인터페이스 템 플 릿 입 니 다.추상 적 인 템 플 릿:이 템 플 릿 에는 모든 문 이 가 져 야 할 공 통 된 속성(예 를 들 어 문의 모양 과 색상 등)과 공 통 된 행위(예 를 들 어 문 을 열 고 닫 는 것)가 포함 되 어야 합 니 다.인터페이스 템 플 릿:일부 문 은 경보 와 지문 인식 등 기능 을 가 져 야 할 수도 있 지만 이런 기능 은 모든 문 이 반드시 가 져 야 하 는 것 도 아니 기 때문에 이런 행 위 는 단독 인터페이스 에 두 어야 한다.위의 두 가지 템 플 릿 이 있 으 면 나중에 문 을 생산 하 는 것 이 편리 하 다.추상 적 인 템 플 릿 과 경보 기능 을 포함 한 인터페이스 템 플 릿 을 이용 하면 경보 기능 을 가 진 문 을 생산 할 수 있다.마찬가지 로 추상 적 인 템 플 릿 과 지문 인식 기능 을 포함 한 인터페이스 템 플 릿 을 이용 하면 지문 인식 기능 을 가 진 문 을 생산 할 수 있다.한 마디 로 하면 추상 류 는 자연계의 유사 성과 행 위 를 가 진 대상 을 추상 화 하 는 데 쓰 인 다.한편,인 터 페 이 스 는 추상 적 인 행위 의 기준 과 규범 에 사용 되 고 인터페이스의 실현 자 에 게 특정한 규범 에 따라 특정한 기능 을 완성 해 야 한다 고 알려 준다.이것 은 저의 견해 입 니 다.여러분 과 저 와 이 문 제 를 토론 하 는 것 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기