Pink Transparent Star

C#/개념 공부

[ 내일배움캠프 ] TIL.13 - 인터페이스 ( Interface )

채유나 2024. 5. 1. 19:22
728x90

🔷 인터페이스란 ?

클래스와 비슷하게 메서드, 속성, 이벤트, 인덱서 등을 갖지만 인터페이스는 이를 직접 구현하지 않고 단지 정의만 갖는 것을 의미한다. 하지만 인터페이스는 클래스의 일종이 아니다. 클래스가 인터페이스를 가지는 경우 해당 인터페이스의 모든 멤버에 대한 구현을 제공해야한다. 

🔗 인터페이스

 

 

🔷 인터페이스를 사용하는 이유

🔸 코드의 재사용 :

다른 클래스에서 해당 인터페이스를 구현하여 동일한 기능을 공유 할 수 있다. 다양한 클래스가 동일한 동작을 수행할 수 있어 코드의 재사용이 향상된다.

 

🔸 다중 상속 제공

클래스의 경우 단일 상속만 가능하다.  하지만 인터페이스의 경우 다중 상속을 지원하기때문에 여러개의 기능을 조합하여 사용할 수 있다.

 

🔸유연한 설계 :

클래스와 인터페이스 간에 느슨한 결합을 형성할 수 있다. 클래스는 인터페이스를 구현하기만 하면 되어 클래스의 내부 구현에 대한 변경 없이 인터페이스의 동작을 변경하거나 새로운 인터페이스를 추가 할 수 있기 때문이다.

 

🔷 인터페이스 정의

Interface의 C# 키워드를 사용하여 정의한다. 메서드의 목록만 미리 정의해 둔 것으로 이때 내부 멤버들에 대한 접근 제한자를 사용하지 않는다. 그이유는 모든것이 public으로 선언되기 때문이다. 인터페이스 이름에는 'I'을 붙혀 Interface 인것을 명시해야한다.

이때 Interface에 속한 메서드는 컴파일러가 모두 가상 메서드에 간주하기 때문에 virtual, override 키워드를 지정하게 막았습니다.

public interface IWear
{
	void Wear(); 
}

 

🔷 인터페이스를 이용한 구현

클래스가 인터페이스를 가지게 되는 경우 인터페이스의 모든 멤버를 구현해야한다. 

예시를 들면 다음과 같은 형태를 가지고 있다.

public class Item : IWear
{
	public string name { get; set; }
    
	public void Wear()
	{
		Console.WriteLine($"{name}을 착용했습니다.");
	}
}

 

🔷 인터페이스 사용

 public class Player
 {
     public void WearEquipment(IWear Equip)
     {
         Equip.Wear();
     }
 }

 public class Program
 {
     static void Main(string[] args)
     {
         Player player = new Player();
         Item item = new Item{ name = "갑옷"};

         player.WearEquipment(item);
     }
 }

실행 결과

 

이와같이 인터페이스는 사용할 메서드들을 모아둔 명세라고 이야기 할 수 있다. 인터페이스를 통해 다른 클래스나 모듈에서 어떤 기능을 제공하는지 알 수 있게 해주기 때문에 코드의 가독성과 이해도를 높일 수 있습니다. 하지만 인터페이스는 추상 클래스와 마찬가지로 인스턴스를 직접 생성할 수 없어 인터페이스를 구현한 클래스의 인스턴스를 생성해야한다.

 

그동안 인터페이스를 왜 쓰는건지 이해를 못하고 사용하고 있었는데 다시 한번 정리함으로써 왜 쓰는지 이해한 것 같아 한번 응용해서 사용해보는 노력을 해봐야겠다.

 

🔷 참고 사이트

 

C# 인터페이스 - C# 프로그래밍 배우기 (Learn C# Programming)

C# 인터페이스 클래스와 비슷하게 인터페이스는 메서드, 속성, 이벤트, 인덱서 등을 갖지만, 인터페이스는 이를 직접 구현하지 않고 단지 정의(prototype definition)만을 갖는다. 즉, 인터페이스는 추

www.csharpstudy.com

 

 

[C#] 객체지향의 꽃, 인터페이스(Interface) - 1편

/* 책을 바탕으로 공부한 글입니다. */ 다중상속이 허용되지 않는 C#에서 인터페이스(Interface)는 객체지향 프로그래밍을 한층 더 강력하게 만들어주는 요소다. 객체지향의 꽃이며, 객체지향 프로

daekyoulibrary.tistory.com

 

728x90