C# Apps C# 인터페이스 

2017.06.18 15:26

가을의곰 조회 수:262

 

C# 인터페이스 
 

클래스와 비슷하게 인터페이스는 메서드, 속성, 이벤트 등을 갖지만, 인터페이스는 이를 직접 구현하지 않고 단지 정의(prototype definition)만을 갖는다. 즉, 인터페이스는 추상 멤버(abstract member)로만 구성된 추상 베이스클래스(abstract base class)와 개념적으로 비슷하다. 클래스가 인터페이스를 가지는 경우 해당 인터페이스의 모든 멤버에 대한 구현(implementation)을 제공해야 한다.

클래스는 하나의 베이스 클래스만을 가질 수 있지만 인터페이스는 여러 개를 가질 수 있다. 아래의 예를 보면, MyConnection이라는 클래스는 Component라는 하나의 베이스클래스와 IDbConnection, IDisposable이라는 2개의 인터페이스를 상속하고 있음을 알 수 있다. 
 


 


C# 인터페이스의 정의 
 

인터페이스는 C# 키워드 interface를 사용하여 정의한다. 인터페이스 정의 시에는 (메서드와 같은) 내부 멤버들에 대해 public과 같은 접근 제한자를 사용하지 않는다.
예를 들어, 아래 CompareTo() 메서드 앞에 public 을 쓸 수 없다. 
 


 


C# 인터페이스의 구현 
 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

C# 클래스가 인터페이스를 갖는 경우 인터페이스의 모든 멤버에 대한 구현을 제공해야 한다. C# 에서는 인터페이스로부터 직접 new를 사용하여 객체를 생성할 수 없다. 아래의 클래스는 IComparable이라는 인터페이스를 갖는 경우로서 CompareTo() 메서드를 구현한 예이다. 
 

예제

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);
   }
}


 


C# 인터페이스의 사용 
 

C# 실무에서 클래스와 인터페이스를 잘 정의하고 사용하는 것은 매우 중요하다. 비지니스를 객체지향 프로그래밍으로 디자인하고 구현하는데 가장 중요한 핵심이기 때문이다. 자연스럽게 .NET Framework도 상당히 많은 인터페이스를 구현했으며, 자주 사용되고 있다.

다음의 예는 IDnConnection이라는 인터페이스를 사용하는 예제이다. 이 코드에서 GetDbConnection() 메서드는 시스템의 구성파일로부터 DB타입과 Connection String을 받아와 데이타베이스 Connection을 리턴한다. GetDbConnection()가 DB connection을 리턴할 때 IDbConnection을 리턴하고 있는데, 이 때문에 이 메서드를 사용하는 클라이언트에서는 어떤 DB를 사용하든지 상관없이 모든 DB 클래스에 공통적으로 구현된 IDbConnection 메서드들을 사용할 수 있게 된다. 
 

예제

public void Run()
{
   // 인터페이스 사용하기 때문에
   // 특정 DB Connection을 신경 쓸 필요가 없다
   IDbConnection dbCon = GetDbConnection();
   dbCon.Open();
   if (dbCon.State == ConnectionState.Open)
   {
      dbCon.Close();
   }
}

// IDbConnection 인터페이스를 리턴
public IDbConnection GetDbConnection()
{
   IDbConnection dbConn = null;
   string cn = ConfigurationManager.AppSettings["Connection"];
   switch (ConfigurationManager.AppSettings["DbType"])
   {
      case "SQLServer":
         dbConn = new SqlConnection(cn);
         break;
      case "Oracle":
         dbConn = new OracleConnection(cn);
         break;
      case "OleDB":
         dbConn = new OleDbConnection(cn);
         break;         
   }
   return dbConn;
}

 

[출처] http://www.csharpstudy.com/CSharp/CSharp-interface.aspx

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
24 윈도우즈 마켓 앱 스토어 개발 안내서  가을의곰 2017.06.18 154
23 Assembly.GetType 메서드 file 가을의곰 2017.06.18 140
22 Executing Code in Another Application Domain (C# Programming Guide) 가을의곰 2017.06.18 142
21 1. 리플렉션(Reflection) 가을의곰 2017.06.18 159
20 .NET Reflection  가을의곰 2017.06.18 176
19 C# - Interfaces 가을의곰 2017.06.18 151
» C# 인터페이스  가을의곰 2017.06.18 262
17 Public Key Tokens with sn 졸리운_곰 2017.05.27 188
16 [C#] 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. [출처] C# : 오류 System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.(오류 System.NullReferenceException) 졸리운_곰 2017.05.27 2354
15 private, public, protected 그리고 internal?? 접근 한정자에 대해 알아보자. 졸리운_곰 2017.05.27 163
14 [.NET Framework] .NET : 368. 닷넷의 어셈블리 서명 데이터 확인 방법 [링크 복사], [링크+제목 복사] file 졸리운_곰 2017.05.27 331
13 [Tips] Visual Studio 에서 특정 어셈블리의 PublicKeyToken 찾는 법 졸리운_곰 2017.05.27 409
12 .net의 publickeytoken 찾는 sn 프로그램 경로 졸리운_곰 2017.05.27 213
11 예외 문제 해결: System.BadImageFormatException 졸리운_곰 2017.05.27 932
10 A replacement for MemoryStream file 졸리운_곰 2017.05.20 197
9 [.net] jni4net 을 이용하여 c# .net 에서 .jar 파일 사용하기 file 졸리운_곰 2017.04.26 384
8 A Simple Crawler Using C# Sockets file 졸리운_곰 2017.04.24 273
7 ILSpy 닷넷 어셈블리 디컴파일러 오픈 소스 file 졸리운_곰 2017.04.22 428
6 C# WinForm "인증서 저장소에서 매니페스트 서명 인증서를 찾을 수 없습니다." file 졸리운_곰 2017.03.18 741
5 Getting started with SQLite in C# file 졸리운_곰 2017.03.18 286
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED