인터페이스
메서드의 목록만 가지는 타입. interface 키워드로 선언하며 대문자 I로 시작하는 것이 관례이다.
지정자 interface 이름 : 기반인터페이스 {
// 메서드 목록
}
인터페이스의 멤버는 추상 메서드이기 때문에 객체를 생성할 수 없고 메서드를 물려주는 역할만 한다. 인터페이스로부터 상속받는 클래스는 인터페이스의 모든 메서드를 구현해야 한다. 인터페이스는 추상 클래스와 유사한데 추상 클래스는 일부 메서드만 추상인데 비해 인터페이스는 모든 메서드가 추상이라는 점이 다르다. 또 다른 차이점으로는 인터페이스는 다중 상속에도 사용할 수 있다는 점이 있다.
interface IUnit
{
void Move(int x, int y);
void Attack(int x, int y);
void Die();
}
class Marine : IUnit
{
public void Move(int x, int y) { Console.WriteLine("레츠 무브"); }
public void Attack(int x, int y) { Console.WriteLine("두두두두"); }
public void Die() { Console.WriteLine("으아악"); }
}
class SCV : IUnit
{
public void Move(int x, int y) { Console.WriteLine("예썰"); }
public void Attack(int x, int y) { Console.WriteLine("찌직 찌직"); }
public void Die() { Console.WriteLine("펑~"); }
}
internal class Program
{
static void Main(string[] args)
{
Marine M = new Marine();
M.Move(5, 5);
M.Attack(5, 5);
M.Die();
}
}
IUnit 인터페이스는 이동, 공격, 사망 세 개의 동작을 메서드 목록으로 제공하며 구현은 정의하지 않는다. 구현 방식은 자식 클래스가 결정한다. Marine 클래스를 보면 IUnit을 상속받아 세 개의 동작을 구체적으로 기술 했으므로 정상적인 유닛으로 인정된다. SCV 또한 모두 구현했다. 인터페이스는 구현 방식까지 강제하지는 않아 유닛의 특성에 따라 고유하게 구현할 수 있다.
Reference
SoEn:소프트웨어 공학 연구소
www.soen.kr
'개발 > C#' 카테고리의 다른 글
[C#] 자습서 10장 - 델리게이트 (0) | 2023.02.02 |
---|---|
[C#] 자습서 8장 - 상속(2) (0) | 2023.01.17 |
[C#] 자습서 7장 - 상속(1) (0) | 2023.01.13 |
[C#] 자습서 6장 - 함수 (0) | 2023.01.11 |
[C#] 자습서 5장 - 클래스 (0) | 2023.01.10 |