728x90
반응형
인터페이스 란(Interface)?
인터페이스는 언뜻 보면 클래스와 상당히 유사해 보이지만 인터페이스 내부에서는 구현이 불가능하다.
메서드나 속성의 선언 및 정의는 가능하지만 멤버들에 대한 구현은 이를 제공하는 클래스 및 구조체에서 행해야 한다. 인터페이스의 특징들은 다음과 같다.
인터페이스의 특징
- 오직 메서드와 속성의 선언만 가능하다.
- 각 속성들의 실제 구현은 상속받은 클래스가 인터페이스의 정의된 모든 속성을 구현해야 한다.
- 다중 상속이 가능하다. 따라서 한 클래스가 여러 인터페이스를 구현할 수 있다.
- 다양한 클래스에서 동일한 인터페이스를 사용한다면 메서드와 속성을 일관화 할 수 있어 코드의 일관성이 보장된다.
- 추상화에 용이하다, 즉 인터페이스를 통하기 때문에 세부적인 클래스의 구현을 숨길 수 있고 구현 세부사항이 변경되어도 인터페이스에 영향을 미치지 않는다.
- 클래스 간의 결합도를 낮추어 시스템을 모듈화 하기 좋게 만들어 준다.
인터페이스와 추상클래스의 차이점
객체 지향 프로그래밍에서 클래스 간의 관계를 정리하고 코드를 구조화하는데 있어서 인터페이스와 추상클래스는 비슷해보인다. 하지만 이 둘 간에는 몇가지 기능적인 차이점이 있다.
1. 상속 (Inheritance)
- 추상 클래스는 단일 상속만 지원하지만 인터페이스는 다중 상속을 지원한다.
2. 구현(Implementation)
- 추상 클래스 내부에서는 메서드 구현이 가능하다.
- 추상 클래스 내부에서 구현한 메서드는 하위 클래스에서 재정의할 필요가 없다.
- 인터페이스 내부에서는 구현이 불가능하며 오직 선언만 가능하다.
- 인터페이스를 구현하는 클래스는 해당 인터페이스에서 정의한 모든 메서드를 구현해야 한다.
3. 주된 사용 용도
- 인터페이스는 다양한 클래스가 공통된 양식을 구현하도록 강제할 때 유용하다.
- 추상 클래스는 기본적으로 공통된 기능을 공유하면서도, 일부 메서드는 하위 클래스에서 반드시 재정의해야 하는 경우에 유용하다.
인터페이스 사용 예시
static void Main(string[] args)
{
IMyInterface_1 myClass = new MyClass();
myClass.Name = "JYJ";
myClass.MyMethod();
}
interface IMyInterface_1
{
string Name { get; set; }
void MyMethod();
}
public class MyClass : IMyInterface_1
{
public string Name { get; set; }
public void MyMethod()
{
Console.WriteLine($"MyMethod Debug. Name is {Name}");
}
}
- 인터페이스 내부에서는 속성 및 메서드를 선언한다.
- MyClass에서 해당 인터페이스를 구현한다.
- Main문에서 IMyInterface_1 인터페이스 타입의 변수를 선언하고, MyClass의 인스턴스를 생성하여 할당한다.
- MyClass가 IMyInterface_1 인터페이스를 구현하고 있기 때문에 사용이 가능하다.
- Name 속성에 값을 할당하고 MyMethod를 호출한다.
728x90
반응형
'C#' 카테고리의 다른 글
C# - 이벤트(Event) / 델리게이트와 이벤트의 차이점 (0) | 2024.08.21 |
---|---|
C# - 델리게이트(Delagate) (0) | 2024.08.15 |
C# - 라이브러리 vs 프레임워크 (2) | 2024.07.11 |
C# - Struct 와 Class의 차이점 (0) | 2024.06.21 |
C# - 스레드(Thread) (1) | 2024.06.18 |