출저 참고 : http://blog.eairship.kr/148 (누구나가 다 이해할 수 있는 프로그래밍 첫걸음 블로그)
를 공부하면서 나중에 다시보기 쉽게 정리한 것입니다. 원본은 위 글입니다.!
인터페이스(Interface)
- 선언 형식
1 2 3 4 | interface 인터페이스명 { // ... } | cs |
- 포함 불가능 : 메소드, 이벤트, 인덱서, 속성, 필드
- 모든 멤버는 public으로 기본 지정.
- 몸통이 정의되어 ㅇ딨지 않은 추상적인 멤버를 가짐.
- 클래스는 다중 상속이 불가능하고 단일 상속만 할 수 있으나,
- 인터페이스는 다중 상속이 가능.
- ( 다른 인터페이스를 상속하거나, 클래스에서 인터페이스 하나를 여러 차례 상속할 수 있습니다. )
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 30 31 32 33 34 35 36 37 38 39 40 41 42 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication32 { interface IMyInterfaceA { void print(); } interface IMyInterfaceB { void print(); } class MyClass : IMyInterfaceA, IMyInterfaceB { static void Main(string[] args) { MyClass mc = new MyClass(); IMyInterfaceA imca = mc; imca.print(); IMyInterfaceB imcb = mc; imcb.print(); } void IMyInterfaceA.print() { Console.WriteLine("IMyInterfaceA.print() 호출."); } void IMyInterfaceB.print() { Console.WriteLine("IMyInterfaceB.print() 호출."); } } } | cs |
결과 : IMyInterfaceA.print() 호출.
IMyInterfaceB.print() 호출.
- 32~40행을 보면 동일 함수를 구현시, 함수명 앞에 해당 인터페이스명을 명시하여 구현.
- 인터페이스가 인터페이스를 상속 가능
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication32 { interface ParentInterface{ void myMethod(string str); } interface SubInterface : ParentInterface{ void myMethod(string str, int i); } class MyClass : SubInterface { public void myMethod(string str) { Console.WriteLine(str + " ParentInterface.myMethod() call!"); } public void myMethod(string str, int count) { for (int i = 0; i < count; i++) { Console.WriteLine(str + " SubInterface.myMethod() " + i + " call!"); } } } class Program { static void Main(string[] args) { MyClass sif = new MyClass(); sif.myMethod("Interface"); sif.myMethod("Inherits", 4); } } } | cs |
결과 : Interface ParentInterface.myMethod() call!
Inherits SubInterface.myMethod() 0 call!
Inherits SubInterface.myMethod() 1 call!
Inherits SubInterface.myMethod() 2 call!
Inherits SubInterface.myMethod() 3 call!
'NOTE > Programming' 카테고리의 다른 글
[C#] 컬렉션 (0) | 2018.04.01 |
---|---|
[C#] 예외처리 (0) | 2018.04.01 |
[C#] 확장 메소드, 분할 클래스, 중첩 클래스 (0) | 2018.04.01 |
[C#] 클래스의 상속 (0) | 2018.04.01 |
[C#] Delegate && Event (0) | 2018.04.01 |