Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

Interface (인터페이스)

작성자 : 박종명
최초 작성일 : 2008-05-30 (금요일)
최종 수정일 : 2008-05-30 (금요일)
조회 수 : 4731

인터페이스의 사용법을 알아 보자
 
사실 인터페이스는의 사용법 자체는 아주 간단하다.
중요한 것은 객체 지향 언어에서의 인터페이스의 역할과 적절한 목적이다.
 
잘 설계된 , 확장과 유지/보수를 위해서 인터페이스는 적절한 사용은 필수적이다.
그러나 여기서는 인터페이스이 기본적인 사용 방법과 특징을 알아 본다
 
* 인터페이스 특징
= 인터페이스 입장 =
1) 인터페이스는 메쏘드 만을 가진다
2) 인터페이스의 메쏘드는 시그너쳐 만을 기술한다
3) 인터페이스의 메쏘드에 접근 한정자를 지정할 수 없다
    모든 메쏘드는 실질적으로 public 이다
4) 인터페이스는 필드(변수)를 정의 할 수 없다
    단, 프로퍼티는 정의할 수 있다 (프로퍼티 역시 메소드 이므로)
5) 인터페이스로 직접 객체 생성(new 인터페이스()) 하지 못한다
 
= 인터페이스를 구현하는 클래스 입장 =
1) 클래스는 다중 인터페이스를 구현 할 수 있다
    기본적으로 클래스의 다중 상속은 불가능 하다. 단 인터페이스의 다중 구현은 가능하다
2) 인터페이스의 메쏘드 구현시 반드시 public 접근 한정자를 지정해야 한다
    어차피 인터페이스에 정의된 메쏘드는 실질적으로 public 라고 했다.
    단, 명시적 인터페이스 메쏘드 구현일 경우에는 public 을 생략해야 한다
3) 인터페이스의 메쏘드 구현시 virtual 로 구현할 수 있다
4) 결국 인터페이스의 메쏘드를 오버라이딩 하는 것이지만 명시적으로 override 키워드를 사용하면 안된다.
 
* Ex
데모를 보며 위의 특징을 음미 해 보 자
 
1. 인터페이스 정의와 인터페이스를 구현한 클래스



2. 사용 예



3. 실행 결과




* 명시적 인터페이스 메쏘드 구현

인터페이스를 구현한 클래스에서 인터페이스의 메쏘드 구현을 반드시 그 인터페이스 타입을 통해서만 호출 가능하도록 만들 수 있다. 이를 명시적 인터페이스 메쏘드 구현이라 한다.
 
위의 데모는 명시적으로 하지 않았다. 따라서 아래와 같은 코드도 가능하다

Zelot z = new Zelot();
z.Attack();
 
그러나 이것을 아래와 같이 명시적 인터페이스로 구현한다면..

class Zelot : IAttackAble
 {  
  void IAttackAble.Attack()
  {
   Console.WriteLine("사시미 어텍");
  }
 }

더이상 ,

Zelot z = new Zelot();
z.Attack();  //error

로 호출 할 수 없다.
 
반드시 아래와 같이 호출 해야 한다

IAttackAble z = new Zelot();
z.Attack();

즉, 반드시 IAttackAble 변수로만 메쏘드를 호출 할 수 있다
 
명시적 인터페이스를 구현할 경우에는 public 접근 한정자를 생략해야 한다.
어차피 인터페이스를 통해서만이 메쏘드의 호출이 가능하기 때문에 public 접근 한정자를 지정하지 않음은 당연할 것이다.  (인터페이스의 모든 메쏘드는 public 라고 했다) 
 

이름
비밀번호
홈페이지
OA <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요