추천, 2024

에디터의 선택

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

추상 클래스
추상 클래스는 다른 클래스의 기본 클래스로만 사용됩니다. 'abstract'수식어는 클래스 추상화를 만드는 데 사용됩니다. 추상 변경자는 그로부터 파생 된 클래스에서 구현되어야하는 누락 된 구현이 있음을 나타냅니다. abstract 클래스는 abstract 멤버와 non-abstract 멤버를 가질 수 있습니다. 추상 클래스에는 적어도 하나의 추상 메소드가 있어야하며, 그렇지 않으면 해당 클래스를 '추상'으로 선언하는 용도는 없습니다.

C #의 추상 클래스 예제 :

abstract 클래스 MyCircle {abstract public int Area (); } 클래스 MyArea : MyCircle {public override int Area () {반환 측면 * 쪽; .....}}
1 2 3 4 5 6 7 8 9 10 11abstract 클래스 MyCircle {abstract public int Area (); } 클래스 MyArea : MyCircle {public override int Area () {반환 측면 * 쪽; . . . . . }}

위의 예에서와 같이 MyCircle 클래스의 추상 메서드 'Area'는 파생 클래스 MyArea에서 재정의됩니다.

인터페이스
인터페이스에는 메서드, 속성, 이벤트 또는 인덱서를 비롯한 멤버 선언 만 포함됩니다. 이 멤버의 구현은 포함되어 있지 않습니다. 클래스 또는 구조체는 인터페이스를 구현하고 인터페이스에 선언 된 메소드의 정의를 제공해야합니다. 이는 인터페이스가 파생 클래스가 따라야하는 표준 구조를 제공한다는 것을 의미합니다.

C #의 인터페이스 예제 :

using System.Collections.Generic; using System.Linq; using System.Text; 네임 스페이스 MyName {공용 인터페이스 MyData {void getdata (); void showdata (); } 공용 클래스 NameData : MyData {public double getdata () {string name; Console.WriteLine ( "이름 입력 :"); 이름 = Console.ReadLine (); } public void showdata () {Console.WriteLine ( "내 이름은 :", 이름); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22시스템 사용. 컬렉션. 일반; 시스템 사용. Linq; 시스템 사용. 텍스트; 네임 스페이스 MyName {공용 인터페이스 MyData {void getdata (); void showdata (); } 공용 클래스 NameData : MyData {public double getdata () {string name; 콘솔. WriteLine ( "이름 입력 :"); 이름 = 콘솔. ReadLine (); } 공공 무효 showdata () {콘솔. WriteLine ( "내 이름은 :", 이름); }}}

위의 예에서와 같이 인터페이스 MyData에는 getdata () 및 showdata ()라는 두 개의 메소드 선언이 있습니다. 이 인터페이스를 구현하고있는 NameData 클래스는, MyData 인터페이스로 선언 된 메소드의 정의를 제공 할 필요가 있습니다.

추상 클래스와 인터페이스의 차이점

  1. abstract 클래스는 abstract 멤버와 non-abstract 멤버를 가질 수 있습니다. 그러나 인터페이스에서 모든 멤버는 암시 적으로 추상이므로 파생 클래스에서 재정의해야합니다.
  2. 클래스는 여러 인터페이스를 상속하지만 추상 클래스는 하나만 상속받을 수 있습니다.
  3. 추상 클래스는 정의가있는 메소드 또는 정의가있는 메소드를 포함 할 수 있습니다. 그러나 인터페이스에는 메서드 시그니처 만 포함될 수 있습니다.
  4. 추상 클래스는 완전히, 부분적으로 또는 전혀 구현되지 않지만 인터페이스는 완전히 구현되어야합니다. 즉, 모든 멤버가 파생 클래스에 정의되어야합니다.
  5. 인터페이스는 액세스 한정자를 포함 할 수 없지만 추상 클래스는 함수, 속성 또는 이벤트에 대해이를 가질 수 있습니다.
Top