.NET 에서 인터페이스 와 클래스 의 차이 에 대한 분석

머리말
.Net 에서 인 터 페 이 스 를 제공 한 다 는 것 은 클 라 스 나 Struct 의 유형 정의 와 다르다 는 것 을 잘 알 고 있 을 것 입 니 다.인 터 페 이 스 는 추상 류 와 같 아 보이 기 때문에 일부 사람들 은'Net'에서 추상 류 를 완전히 인터페이스 로 대체 할 수 있다 고 생각한다.사실은 그렇지 않 으 면 인터페이스 와 추상 류 는 각각 장점 과 결함 이 있 기 때문에 응용 에서 이들 은 결합 하여 사용 하여 장단 점 을 보완 해 야 한다.다음은 긴 말 없 이 상세 한 소 개 를 해 보 겠 습 니 다.
다음은 추상 류 와 인터페이스의 차 이 를 말한다.
하나,둘 이 표현 하 는 개념 이 다르다.추상 류 는 사물 의 고도 집합 이다.그러면 추상 류 를 계승 하 는 자 류 에 있어 추상 류 에 있어'예'의 관계 에 속한다.한편,인 터 페 이 스 는 행위 규범 을 정의 하기 때문에 인 터 페 이 스 를 실현 하 는 서브 클래스 에 있어 인터페이스 에 비해'행 위 는 인터페이스 에 따라 완성 해 야 한다'는 것 이다.이것들 은 듣 기 에 좀 허 하 다.예 를 들 어 보 자.예 를 들 어 개 는 모든 개 류 동물 에 대한 통칭 이다.경 하 는 개 이 고 셰퍼드 는 개 이다.그러면 개의 일반적인 특성 은 모두 경 하,셰퍼드 에서 찾 을 수 있다.그러면 개 는 경 하 와 셰퍼드 에 비해 이런 사물 의 추상 적 인 유형 에 속한다.'짖 어'라 는 동작 에 있어 개 는 짖 을 수도 있 고 새 도 울 수 있다.전 자 는 추상 류 에 해당 하고 후 자 는 인 터 페 이 스 를 가리 키 는 것 이 분명 하 다.
둘째,추상 류 는 유형 방법 을 정의 할 때 방법의 실현 부분 을 제시 할 수도 있 고 제시 하지 않 을 수도 있다.인터페이스 에 있어 서 정 의 된 방법 은 실현 부분 을 제시 할 수 없다.
예 를 들 면:

publicabstractclassAbsTest
{
publicvirtualvoidTest()
{
Debug.WriteLine("Test");
}
publicabstractvoidNewTest();
}
publicinterfaceITest
{
voidTest();
voidNewTest();
}
셋째,상속 류 는 이들 이 관련 된 방법 에 대한 실현 이 다르다.계승 류 가 추상 류 에 정 의 된 추상 적 인 방법 은 다시 쓰 지 않 아 도 된다.즉,추상 류 의 방법 을 사용 할 수 있다.한편,인터페이스 류 가 정의 하 는 방법 이나 속성 에 있어 계승 류 에서 해당 하 는 방법 과 속성 을 제시 해 야 한다.
넷 째,추상 류 에서 하나의 방법 을 추가 하면 계승 류 에서 어떠한 처리 도 하지 않 아 도 된다.인터페이스 에 있어 서 는 계승 류 를 수정 하고 새로운 정 의 를 내 리 는 방법 이 필요 하 다.
이들 의 차 이 를 알 고 다시 말 하면 인 터 페 이 스 는 추상 류 에 비해 우세 하 다.
장점 1.인 터 페 이 스 는 인용 유형 뿐만 아니 라 값 유형 에 도 작용 할 수 있다.추상 류 는 인용 유형 에 만 작용 할 수 있다.
좋 은 점 2.Net 의 유형 상속 은 단독 상속 일 수 밖 에 없다.즉,한 유형 은 한 유형 만 계승 할 수 있 고 여러 인 터 페 이 스 를 계승 할 수 있다 는 것 이다.사실 저 는 이 점 에 찬성 합 니 다.상속 을 많이 하면 상속 나 무 를 혼 란 스 럽 게 만 들 수 있 습 니 다.
장점 3.인 터 페 이 스 는 속성 과 방법 만 정의 하고 진정 으로 실현 되 는 유형 과 큰 관계 가 없 기 때문에 인 터 페 이 스 는 여러 가지 유형 에 의 해 재 활용 된다.이에 비해 추상 류 와 계승 류 의 관 계 는 더욱 밀접 하 다.
좋 은 점 넷 째,인 터 페 이 스 를 통 해 유형 노출 의 속성 과 방법 을 감소 시 켜 유형 대상 을 보호 할 수 있다.인 터 페 이 스 를 실현 하 는 유형 은 다른 방법 이나 속성 을 포함 할 수 있 지만 방법 이 돌아 올 때 인터페이스 대상 을 되 돌려 줄 수 있 습 니 다.이렇게 호출 단 은 인터페이스 에서 제공 하 는 방법 이나 속성,방문 대상 의 관련 요 소 를 통 해 대상 의 다른 요 소 를 효과적으로 보호 할 수 있 습 니 다.
좋 은 점 5.값 유형의 분해 작업 을 줄인다.Struct 가 정의 하 는 값 형식 데 이 터 는 집합 에 저장 할 때 꺼 낼 때마다 분리 작업 을 해 야 합 니 다.이 때 Struct+Interface 를 결합 하 는 방법 으로 분리 작업 을 낮 춥 니 다.
추상 류 에 비해 인 터 페 이 스 는 이렇게 많은 장점 이 있 지만 인 터 페 이 스 는 치 명 적 인 약점 이 있다.즉,인터페이스 가 정의 하 는 방법 과 속성 은 그 유형(계승 류 에서 인터페이스 정의 함수 표 시 를 수정 하지 않 는 한)을 계승 하 는 것 과 비교 할 수 밖 에 없다 는 것 이다.그러면 다 층 계승 관 계 를 할 때 인터페이스 만 으로 는 실현 하기 어렵다.모든 유형 이 인 터 페 이 스 를 계승 하여 이 루어 지게 한다 면 코드 작성 이 번 거 로 운 것 은 물론 이 고 실행 결과 가 잘못 되 었 을 때 도 있 습 니 다.특히 하위 유형 대상 이 기본 대상 으로 암시 적 으로 바 뀌 어 접근 할 때 도 있 습 니 다.
그렇다면 이 럴 때 는 인터페이스 와 가상 방법 을 결합 해 야 한다.사실 계승 에 서 는 인 터 페 이 스 를 사용 하 는 것 이 추상 적 인 것 일 까?인 터 페 이 스 는 고정 적 이 고 약 속 된 것 이기 때문에 계승 류 에서 인터페이스 에 해당 하 는 방법 과 속성의 실현 을 제공 해 야 한다.한편,추상 류 에 있어 추상 류 의 정의 방법 이 실현 되 고 전체 계승 나 무 를 관통 하기 때문에 그 중에서 방법의 실현 이나 재 작성 은 모두 불확실 하 다.따라서 상대 적 으로 추상 적 인 유형 은 인터페이스 보다 더욱 유연 하 다.
다음은 이들 의 간단 한 대비 표를 보 여 준다.

인터페이스
추상 류
다 상속
지지 하 다.
지지 하지 않 음
유형 제한
없다
네,인용 형식 만 가능 합 니 다.
방법 실현
계승 유형 중 방법 을 제시 하여 실현 해 야 한다.
상속 클래스 중 제시 하지 않 아 도 됩 니 다.
확장 성
비교적 번거롭다
비교적 유연 하 다
다 층 상속
비교적 번 거 로 우 니,가상 함 수 를 빌려 야 한다.
비교적 융통성 이 있다
전체적으로 보면 인터페이스 와 추상 류 는 넷 이 유형 간 의 계승 관 계 를 더욱 잘 실현 하기 위해 제공 하 는 언어 수단 이 고 이들 은 서로 보완 되 는 관계 이다.그래서 저 는 아무것도 사용 하지 않 고 무엇 을 사용 하 는 지 강조 하지 않 습 니 다.그러면 문 제 는 이 두 가지 수단 을 프로그램 에 어떻게 합 리 적 으로 응용 하 느 냐 가 중요 합 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기