C#/C# 코딩

[C#] 인터페이스에 대해 알아보자

tangent0426 2024. 8. 29. 18:00
728x90
반응형

 


C#의 마지막으로 인터페이스에 대해 간략하게 알아볼까 합니다.

인터페이스에 대해 상속 같은 조건을 알아보고 싶은 분은 아래링크에 들어가 주시길 바랍니다.


 

 

[C#] 클래스에 대해 알아보자

저번 시간에는 조건문, 반복문을 통해 나이 구별이나 어떤 과일을 좋아하는지 찾아보는 코드를 작성해 보았습니다. 이번에는 이러한 코드의 데이터를 어디서 받는지, 이 모든 걸 통틀어 클래스

tangent0426.tistory.com

 

[C#] 클래스에 대해 더 깊게 알아보자

 

 

인터페이스 소개 및 IComparable, IDisposable 알아보기

인터페이스(Interface)

 

특정한 클래스를 만들 때에 사용하는 규약으로, 클래스와 선언하는 방법이 비슷하며

클래스의 한 종류라고 할 수 있습니다.

 

인터페이스 특징
인터페이스 내에서는 메소드, 이벤트, 인덱서, 속성이 쓰일 수 있음
필드를 포함할 수 없음
모든 멤버는 public로 접근 권한이 기본으로 지정됨
몸통이 정의되어 있지 않은 추상적인 멤버를 가짐
다른 인터페이스를 상속하거나, 클래스에서 인터페이스 하나를 여러 차례 상속할 수 있음
인터페이스는 모두 대문자 I로 시작함

 

IComparable 인터페이스

 

IComparable 인터페이스

  • C#에서 기본적으로 제공해줌
  • 이름 그대로 비교할 때 사용하는 규약임
  • 현실 세계의 무언가를 추상화하여 사용하는 모델 클래스에 많이 적용함

기본적인 클래스와 자료 생성하기

  • 모델 클래스로 인스턴스를 생성하고 List 클래스의 인스턴스에 넣음
  • List 인스턴스의 Sort() 메서드를 호출함
  • Sort() 메서드 : 이름 그대로 정렬하는 메서드
  • 그러나 오른쪽에 있는 코드는 예외가 발생함

 

 

 

 

 

 

 

 

 

 

 

IComparable 인터페이스 상속하려면 Sort () 메서드가 Student 클래스를 어떤 기준으로 정렬해야 할지 몰라 발생하는 오류가 발생하고 기준을 정해주려면 IComparable 인터페이스를 구현해야 합니다.

 

 

IComparable 인터페이스의 메서드 생성하려면 Student 클래스는 IComparable 인터페이스가 정한 규약을 따라야 하며,

IComparable 클래스에 커서를 놓았을 때 생기는 파란색 상자를 누르거나 커서를 놓고 ctrl +. 단축기를 누른 뒤 IComparable 인터페이스 메서드 구현을 누르면 됩니다.

자동으로 CompareTo() 메서드가 생성됩니다.

 

 

CompareTo() 메서드 구현하며 IComparable 인터페이스는

CompareTo() 메서드를 구현해야 한다는 규약을 가지고 있습니다.

Age 속성의 CompareTo() 메서드로 Age 속성끼리 비교합니다.

 

 

인터페이스 인스턴스화하면 인터페이스는 실체가 없는 규칙이므로 인스턴스화할 수 없습니다.

인스턴스화하고자 하면 오류가 납니다.

 

IDisposable 인터페이스

 

IDisposable 인터페이스는 Using 블록을 사용할 때 자동으로 호출되는 규약으로  C# 자체에서 제공하는 인터페이스는 메서드를 호출할 때뿐만 아니라 키워드를 사용할 때도 적용합니다.

 

IDisposable 인터페이스 상속하기

 

IDisposable 인터페이스의 메서드 생성하려면 IDisposable 클래스에 커서를 놓았을 때 생기는 파란색 상자를 누르거나

커서를 놓고 ctrl +. 단축키를 누르면 메서드가 자동으로 생성됩니다.

 

Dispose()메서드 구현 및 호출하기

using 키워드와 IDisposable 인터페이스는 IDispose() 메서드는

using 블록이라는 기능을 사용할 때에 자동으로 호출되는 기능이며

using 블록의 괄호 내에서 생성한 클래스가 IDisposable 인터페이스의 상속을 받을 경우

using 블록을 벗어날 때에 자동으로 Dispose() 메서드를 호출합니다.

코드를 실행하면 Dispose() 메서드를 따로 호출하지 않아도 실행됩니다.

 

인터페이스 생성, 구현, 다향성, 다중 상속 알아보기

인터페이스 생성

 

Interface [인터페이스 이름]{}

인터페이스는 클래스와 동급의 카테고리이며, 클래스를 생성하는 위치라면 어디든지 만들 수 있음 인터페이스를 생성할 때는 interface 키워드를 사용합니다.

 

 

같은 파일에 인터페이스 생성은 이전에 같은 파일에 클래스를 생성할 때와 같은 위치에 인터페이스를 넣어 주면 됩니다.

 

 

또한 다른 파일에 인터페이스 생성으로 프로젝트를 잡고 마우스 오른쪽 버튼 – 추가 – 새 항목을 눌러

새 항목 추가 대화상자를 열어줍니다.

새 항목 대화상자가 뜨면 인터페이스를 선택하고 원하는 이름으로 인터페이스를 추가합니다.

Ex. ITest.cs라는 이름으로 생성합니다.

인터페이스 구현

 

인터페이스 내부에는 클래스 내부에 넣을 수 있었던 인스턴스 메서드, 속성을 넣을 수 있는 걸 인터페이스 구현이라고 합니다.

 

 

인터페이스 상속하려면 클래스를 생성하고 인터페이스를 상속받을 수 있습니다.

 

 

또한 인터페이스 구현하려면 인터페이스 주변에 마우스 커서를 올렸을 때 뜨는 파란색 커서 또는 ctrl +. 단축키를 눌러야 구현이 가능합니다.

 

인터페이스 다형성(Interface Polymorphism)

인터페이스 다형성(Interface Polymorphism)은 인터페이스를 구현한 클래스는

인터페이스를 상속하게 되며.

다형성을 구현할 수 있으므로 아래와 같은 코드가 가능해집니다.

또한 자식인 TestClass클래스가 부모인 IBasic인터페이스로 자료형 변환이 가능합니다.

인터페이스에 다형성이 구현되면 다중 상속을 구현할 수 있습니다.

 

다중 상속(Multiple Inheritance)

 

다중 상속(Multiple Inheritance)은 하나의 클래스가 여러 부모 클래스를 가질 수 있습니다.

클래스 상속과 인터페이스 상속을 함께 활용하면 하나의 클래스가 여러 다형성을 가질 수 있음
Child 클래스에서 Parent 클래스와 IDisable, IComparable 인터페이스를 상속받음
Child 클래스의 직접적인 부모 클래스는 Parent 클래스
보조적으로 IDisable, IComparable 인터페이스의 상속을 받는 형태

 

아래와 같이 세 종류로 자료형 변환이 가능해집니다.

 

 

읽어주셔서 감사합니다.^^

반응형