게임 프로그래밍/C#
Interface
스게
2021. 11. 12. 11:19
클래스와 비슷하게 인터페이스는 메서도, 속성, 이벤트, 인덱서 등을 갖지만, 인터페이스는 이를 직접 구현하지 않고 단지 정의만을 갖는다. 고로 클래스가 인터페이스를 가지는 경우 해당 인터페이스의 모든 멤버에 대한 구현을 제공해야 한다.
클래스는 하나의 베이스 클래스만을 가질 수 있지만 인터페이스는 여러 개를 가질 수 있다.
예시
//Component라는 베이스클래스와 IDbConnection,IDisposable 이라는 2개의 인터페이스를 상속받음.
public class MyConnection : Component, IDbConnection, IDisposable
{
}
-인터페이스의 정의
interface를 사용하여 정의한다. 정의 시 내부 멤버들에 대해 접근 제한자를 사용하지 않는다.
//interface 사용하여 정의
public interface IComparable
{
//public 같은 접근 제한자 사용 불가
int CompareTo(object obj);
}
-인터페이스 구현
위에 적었듯이 클래스가 인터페이스를 가지는 경우 인터페이스의 모든 멤버에 대한 구현을 제공해야 한다. c#에서는 인터페이스로부터 직접 new를 사용하여 객체를 생성할 수 없다.
//interface IComparable을 상속 받음.
public class MyClass : IComparable
{
private int key;
private int value;
// IComparable 의 CompareTo 메서드 구현
public int CompareTo(object obj)
{
MyClass target = (MyClass)obj;
return this.key.CompareTo(target.key);
}
}