Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로퍼티
- this 키워드
- 자동구현프로퍼티
- base()
- 인덱서
- System.Array
- 가변배열
- 프로퍼티와 생성자
- 오버라이딩
- 메소드숨기기
- 튜플
- 컬렉션 초기화
- 중첩클래스
- 이것이C#이다
- 무명형식
- 인터페이스의 프로퍼티
- as
- 클래스
- 접근 한정자
- 인터페이스 예제
- 분할 클래스
- 클래스 연습문제
- is
- c#
- 배열
- 일반화 클래스
- 인터페이스 상속
- 추상 프로퍼티
- 배열초기화
- 형식변환
Archives
- Today
- Total
제로의영역
8.3 인터페이스를 상속하는 인터페이스 본문
* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.
* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.
1. 용도: 기존의 인터페이스에 새로운 기능을 추가한 인터페이스를 만들고 싶을 때 인터페이스를 아래와 같은 이유로 수정이 불가능할 때 사용.
1) 상속하려는 인터페이스가 소스 코드가 아닌 어셈블리로만 제공:.NET Fameswork SDK에서 제공하는 인터페이스가 그 예.
2) 상속하려는 인터페이스가 소스 코드를 갖고 있어도 이미 인터페이스를 상속하는 클래스들이 존재하는 경우: 클래스는 반드시 인터페이스의 "모든" 메소드와 프로퍼티를 구현해야 하기 때문에 인터페이스를 수정하면 다른 클래스에 영향을 끼침.
2. 사용법: 클래스의 문법과 동일
interface 파생 인터페이스: 부모 인터페이스
예제)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ex8._2
{
interface ILogger //인터페이스 생성
{
void WriteLog(string message); //메소드
}
interface IFormattableLogger:ILogger //ILogger 상속
{
void WriteLog(string format, params Object[] args);
// 두개의 매개 변수를 가지는 메소드
/* string format: 지정된 형식에 따라 개체의 값을 문자열로 변환하여 다른 문자열에 삽입하는 형식의
변수하단의 '("{0} + {1} = {2}", 1, 1, 2)' 참조
params Objec[] args: object데이터 타입의 문자열의 개수가 변하는 인자들을 넘겨받는 형식의 변수 */
}
class ConsoleLogger2:IFormattableLogger //IFormattableLogger 상속
{
public void WriteLog(string message) //ILogger인터페이스의 WriteLog메소드 구현
{
Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
}
public void WriteLog(string format, params Object[] args)
//IFormattableLogger인터페이스의 WriteLog메소드 구현
{
String message = String.Format(format, args);
//message 변수는 개체의 값을 문자열로 변환하여 다른 문자열에 삽입하는 형식을 가리킴.
Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
}
}
class MainProgram
{
static void Main(string[] args)
{
IFormattableLogger logger = new ConsoleLogger2();
//logger객체가 ConsoleLogger2클래스를 가리킴
logger.WriteLog("The world is not flat.");
//ConsoleLogger2의 WriteLog(string message) 메소드 호출
logger.WriteLog("{0} + {1} = {2}", 1, 1, 2);
//ConsoleLogger2의 WriteLog(string format, params Object[] args) 메소드 호출
}
}
}
출력 결과
2019-06-25 오후 6:34:03 The world is not flat.
2019-06-25 오후 6:34:03 1 + 1 = 2
'C#' 카테고리의 다른 글
8.5 추상 클래스 (0) | 2019.06.26 |
---|---|
8.4 여러 개의 인터페이스, 한꺼번에 상속하기 (0) | 2019.06.26 |
8.2 인터페이스는 약속이다 (0) | 2019.06.25 |
7.17 튜플 (0) | 2019.06.18 |
7.16 구조체 (0) | 2019.06.16 |