[C#] 인터페이스(Interface)
[C#] 인터페이스(Interface)
인터페이스(Interface)
사용 이유
코드의 재사용성: 인터페이스를 사용하면 다른 클래스에서 해당 인터페이스를 구현하여 동일한 기능을 공유할 수 있다. 인터페이스를 통해 다양한 클래스가 동일한 동작을 수행할 수 있으므로 코드의 재사용성이 향상된다.
다중 상속 제공: C#에서는 클래스는 단일 상속만을 지원하지만, 인터페이스는 다중 상속을 지원한다. 클래스가 여러 인터페이스를 구현함으로써 여러 개의 기능을 조합할 수 있다. 다중 상속을 통해 클래스는 더 다양한 동작을 수행할 수 있다.
유연한 설계: 인터페이스를 사용하면 클래스와 인터페이스 간에 느슨한 결합을 형성할 수 있다. 클래스는 인터페이스를 구현하기만 하면 되므로, 클래스의 내부 구현에 대한 변경 없이 인터페이스의 동작을 변경하거나 새로운 인터페이스를 추가할 수 있다. 이는 유연하고 확장 가능한 소프트웨어 설계를 가능하게 한다.
특징
- 인터페이스란 클래스가 구현해야 하는 멤버들을 정의하는 것.
- 인터페이스는 클래스의 일종이 아니며, 클래스에 대한 제약 조건을 명시하는 것.
- 클래스가 인터페이스를 구현할 경우, 모든 인터페이스 멤버를 구현해야 한다.
- 인터페이스는 다중 상속을 지원한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//인터페이스 구현
public interface IMovable
{
void Move(int x, int y); // 이동 메서드 선언
}
//
public class Player : IMovable
{
public void Move(int x, int y)
{
// 플레이어의 이동 구현
}
}
public class Enemy : IMovable
{
public void Move(int x, int y)
{
// 적의 이동 구현
}
}
인터페이스 vs 추상클래스
인터페이스의 특징과 장단점:
- 인터페이스는 추상적인 동작만 정의하고, 구현을 갖지 않는다.
- 다중 상속이 가능하며, 여러 클래스가 동일한 인터페이스를 구현할 수 있다.
- 클래스들 간의 결합도를 낮추고, 유연한 상호작용을 가능하게 한다.
- 코드의 재사용성과 확장성을 향상시킨다.
- 단점으로는 인터페이스를 구현하는 클래스가 모든 동작을 구현해야 한다는 의무를 가지기 때문에 작업량이 증가할 수 있다.
추상 클래스의 특징과 장단점:
- 추상 클래스는 일부 동작의 구현을 가지며, 추상 메서드를 포함할 수 있다.
- 단일 상속만 가능하며, 다른 클래스와 함께 상속 계층 구조를 형성할 수 있다.
- 공통된 동작을 추상화하여 코드의 중복을 방지하고, 확장성을 제공한다.
- 구현된 동작을 가지고 있기 때문에, 하위 클래스에서 재정의하지 않아도 될 경우 유용한다.
- 단점으로는 다중 상속이 불가능하고, 상속을 통해 밀접하게 결합된 클래스들을 형성하므로 유연성이 제한될 수 있다.
This post is licensed under CC BY 4.0 by the author.