Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# 프로그램에서 추상 클래스와 인터페이스의 차이점

<시간/>

우리 모두 알고 있듯이 C#은 Java와 같은 객체 지향 프로그래밍이며 캡슐화, 추상화, 상속 및 다형성과 같은 객체 지향 개념을 완벽하게 지원합니다. 추상화와 대조적으로 추상 클래스와 인터페이스는 둘 다 C# 프로그램에서 추상화를 제공하기 때문에 그림으로 나옵니다.

추상 클래스에서 기능을 만들 수 있으며 파생 클래스에서 구현해야 합니다. 인터페이스를 통해 기능을 정의할 수 있지만 구현할 수는 없습니다. 파생 클래스는 인터페이스를 확장하고 해당 기능을 구현합니다.

다음은 추상 클래스와 인터페이스의 중요한 차이점입니다.

Sr. 아니요. 추상 클래스 인터페이스
1 정의 표준 정의의 관점에서 추상 클래스는 개념적으로 인스턴스화할 수 없는 클래스이며 일반적으로 하나 이상의 순수 가상(추상) 기능이 있는 클래스로 구현됩니다. 반면 인터페이스는 이 인터페이스를 상속받은 클래스가 구현해야 하는 멤버 함수에 대한 설명입니다. 즉, 인터페이스는 클래스의 동작을 설명합니다.
2 구현 C#의 다른 일반 클래스 디자인과 마찬가지로 추상 클래스에도 선언과 함께 자체 구현이 있습니다. 반면에 인터페이스는 구현이 아닌 서명만 가질 수 있습니다. 그 구현은 그것을 구현하는 클래스에 의해 제공되는 동안.
3 상속 C#의 사양에 따라 클래스는 다른 클래스 하나만 확장할 수 있으므로 다중 상속은 추상 클래스에 의해 달성되지 않습니다. 반면 인터페이스의 경우 클래스가 여러 인터페이스를 구현할 수 있으므로 인터페이스에 의해 다중 상속이 이루어집니다.
4 생성자 인스턴스화를 위한 C#의 다른 클래스와 마찬가지로 추상 클래스에는 비정적 메서드에 액세스하기 위해 추상 클래스의 인스턴스를 제공하는 생성자가 있습니다. 반면 인터페이스에는 생성자가 없으므로 인터페이스를 구현하는 클래스의 인스턴스를 생성하여 해당 메서드에 액세스할 수 있지만 인터페이스를 직접 인스턴스화할 수 없습니다.
5 수정자 추상 클래스는 C#의 다른 일반 클래스와 가장 유사하므로 public, private, protected 등과 같은 다양한 유형의 액세스 수정자를 포함할 수 있습니다. 반면에 인터페이스는 다른 클래스에서 메소드 구현을 제공하기 위해 구현되어야 하므로 공용 액세스 수정자만 포함할 수 있습니다.
6 성능 추상 클래스에는 추상 메서드 구현에 대한 메서드와 구현이 있으므로 구현 클래스에 대한 참조가 있으므로 성능이 인터페이스에 비해 비교적 빠릅니다. 반면 인터페이스의 성능은 해당 클래스에서 실제 메소드를 찾는 데 시간이 필요하기 때문에 느리다.