01.인터페이스
02.인터페이스 선언
02.인터페이스 사용
- 클래스가 따라야하는 약속
- 이약속은 인터페이스로 부터 파생될 클래스가 어떤 메소들르 구현해야 할지를 정의함
interface 인터페이스이름
{
반환형식 메소드이름1(매개변수_목록);
반환형식 메소드이름2(매개변수_목록);
}
- 클래스와 비슷해 보이지만
- 메소드, 이벤트, 인덱서, 프로퍼티만을 가질수 있다는 차이가 있음
- 이름을 작명할때는 인터페이스 이름은 대문자아이(I)를 붙이는 것이 관례
-
인터페이스는 다중 상속이 가능하다.
-
기존 인터페이스에 새로운 기능을 추가하고 싶은 경우 사용
-
그냥 인터페이스 기능 추가하려면 추가하려는 인터페이스를 수정하면 된다고 생각할 수 있지만
- 그렇게 해도되는 경우가 있고 아닌 경우가 있음
-
인터페이스가 .NET SDK에서 제공하는것 이라면 수정이 안된다.
- 그래서 이인터페이스에서 추가하기 위해서 인터페이스를 상속해서 해야함
-
기능을 추가하려는 인터페이스가 여러 클래스가 상속하는 경우
-
이 경우 다른 클래스들이 기존 인터페이스를 상속하는 경우
- 메서드를 추가하면 원칙상 모든 메소드를 구현해야하기때문에
- 클래스 전부를 수정해야함
-
하지만, 인터페이스의 기본 구현 메소드를 쓰면 이문제도 해결이 가능하긴하다.
-
기본 구현 메소드 구현 전
using System; namespace Test { //기본 구현 메소드 구현 전 interface printDriver { public void printBlack(string message); } public class SamsungPrint : printDriver { public void printBlack(string message) { Console.WriteLine($"삼성 프린트 블랙적용 : {message}"); } } public class LGPrint : printDriver { public void printBlack(string message) { Console.WriteLine($"엘지 프린트 블랙적용 : {message}"); } } public class Person { public static void Main(string[] args) { printDriver samsung = new SamsungPrint(); samsung.printBlack("인쇄테스트"); printDriver lg = new LGPrint(); lg.printBlack("인쇄테스트"); } } }
-
기본 구현 메소드 구현 후
//기본 구현 메소드 구현 후 // ms에서 프린트 드라이브 인터페이스 구현해줌 근데 컬러프린트 드라이브가 생긴 상황 // - 상황 컬러 인쇄가 필요한 경우 삼성만 신제품 출시됨 using System; namespace Test { //기본 구현 메소드 구현 전 interface printDriver { public void printBlack(string message); public void printColor(string message) { Console.WriteLine($"컬러적용 : {message}"); } } public class SamsungPrint : printDriver { public void printBlack(string message) { Console.WriteLine($"삼성 프린트 블랙적용 : {message}"); } public void printColor(string message) { Console.WriteLine($"삼성 프린트 컬러적용 : {message}"); } } public class LGPrint : printDriver { public void printBlack(string message) { Console.WriteLine($"엘지 프린트 블랙적용 : {message}"); } } public class Person { public static void Main(string[] args) { SamsungPrint samsung = new SamsungPrint(); samsung.printBlack("인쇄테스트"); samsung.printColor("인쇄테스트"); LGPrint lg = new LGPrint(); lg.printBlack("인쇄테스트"); //lg.printColor("인쇄테스트"); } } }
-
-
-