달력

02

« 2012/02 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  
2008/02/18 13:22

Interface란? General .NET2008/02/18 13:22

interface의 사전적 의미는 경계면, 접점, 공유영역, 결부하다, 조합하다라는 의미를 가집니다.
인터페이스는 일종의 추상클래스 이지만 추상클래스보다 추상화가 높습니다.
우리가 추상클래스를 부분적으로 그려진 그림이라고 가정한다면 인터페이스는 가징 기본적인 것만 밑 그림으로 그려진 기본 설계도라고 할 수 있습니다.

인터페이스는 클래스를 작성하는데 도움을 줄 목적으로 사용됩니다.

인터페이스를 작성하는 키워드는 interface 입니다.
인터페이스의 예를 코드로 작성하면 다음과 같습니다.

interface IEmployee
{
     int Compare(object obj);
}
- 클래스나 구조체에 속하는 관련 동작의 그룹을 설명
- 메소드, 속성, 이벤트, 인덱서 등의 조합으로 구성될 수 있다.
- 하지만 필드는 포함될 수 없다.
- 기본적으로 public 이다.

인터페이스를 상속 받아서 클래스에서 구현하기 위해서는 정적이 아닌 공용 멤버여야 하고, 인터페이스 멤버와 동일한 이름이나 시그니처를 사용해야 한다.

인터페이스의 속성?
- 추상클래스와 비슷, 비추상 형식에서는 해당 멤버를 모두 구현 해야 함.
- 인스턴스화 할 수 없다.
- 메소드의 구현을 포함하지 않음.

명시적 인터페이스 구현
- 두 인터페이스의 시그니처가 동일한 경우
클래스에서 이 멤버를 구현하면 두 인터페이스에서 이 멤버를 해당 구현으로 사용한다.

interface IControl
{
    void Paint();
}
interface ISurface
{
    void Paint();
}
class SampleClass : IControl, ISurface
{
    // Both ISurface.Paint and IControl.Paint call this method.
    public void Paint()
    {
    }
}

- 두 인터페이스의 시그니처가 다른 경우
이 경우에 구현시 구현이 잘못될 가능성이 존재한다.
특정 인터페이스의 멤버를 명시적으로 구현할려면 마침표를 이용해야 한다.
public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint"); ------ 1
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint"); -------2
    }
}

1은 IControl에서만 쓰였고, 2는 ISurface에서만 사용되었다.
두 메소드의 구현은 철저하게 별개이다.
SampleClass sc = new Sample();
IControl ic = (IControl)sc;
ic.Paint();

ISurface isf = (ISurface)sc;
sc.Paint();

'General .NET' 카테고리의 다른 글

ASP.NET MVC Framework  (0) 2008/03/27
Interface  (0) 2008/02/19
Interface란?  (0) 2008/02/18
스마트클라이언트 서명키 만들기  (0) 2008/02/17
닷넷으로 다국어 지원 폼 만들기  (0) 2008/02/12
using System.IO.Ports  (0) 2008/01/17
TAG
Posted by -세티-