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
- System.Array
- 프로퍼티
- 오버라이딩
- 일반화 클래스
- base()
- c#
- 메소드숨기기
- 인덱서
- 형식변환
- 인터페이스 상속
- 무명형식
- 이것이C#이다
- 컬렉션 초기화
- 자동구현프로퍼티
- as
- 배열
- 클래스
- 인터페이스 예제
- 클래스 연습문제
- 추상 프로퍼티
- 인터페이스의 프로퍼티
- 분할 클래스
- 접근 한정자
- 프로퍼티와 생성자
- is
- 튜플
- 중첩클래스
- this 키워드
- 가변배열
- 배열초기화
Archives
- Today
- Total
제로의영역
8.4 여러 개의 인터페이스, 한꺼번에 상속하기 본문
* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.
* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.
1. 정의: 여러개의 인터페이스를 다중 상속하는 클래스 만들기
2. 용도: 여러 개의 인터페이스에 있는 메소드를 모호성 없이 상속받아야 할 때 사용. >> 상속한 메소드를 클래스 안에서 정확히 구현하여 쓸 수 있도록 함.
3. 사용법: 상속할 인터페이스 이름을 ','로 구분하여 정렬
class 클래스 이름: 상속 인터페이스 1, 상속 인터페이스 2, ...
예제
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ex8._3
{
interface IRunable //인터페이스1
{
void Run(); //public으로 선언된 메소드
}
interface IFlyable //인터페이스2
{
void Fly(); //public으로 선언된 메소드
}
class FlyingCar:IRunable, IFlyable //다중상속 클래스(상속한 인터페이스의 메소드를 모두 구현해야함)
{
public void Run() //인터페이스1의 메소드 구현
{
Console.WriteLine("Run! Run!");
}
public void Fly() //인터페이스2의 메소드 구현
{
Console.WriteLine("Fly! Fly!");
}
}
class MainProgram
{
static void Main(string[] args)
{
FlyingCar car= new FlyingCar(); //FlyingCar클래스의 객체 생성
car.Run(); //FlyinCar클래스의 Run()메소드 호출
car.Fly(); //FlyinCar클래스의 Fly()메소드 호출
IRunable runnable = car as IRunable; //car는 FlyingCar()의 형식, FlyingCar()는 IRunable을 상속하므로 runnable은 형변환 성공
runnable.Run(); //인터페이스1의 Run()메소드 호출
IFlyable flyable = car as IFlyable; //car는 FlyingCar()의 형식, FlyingCar()는 IFlyable을 상속하므로 runnable로 형변환 성공
flyable.Fly(); //인퍼에시스2의 Fly()메소드 호출
}
}
}
출력 결과
Run! Run!
Fly! Fly!
Run! Run!
Fly! Fly!
'C#' 카테고리의 다른 글
8장 인터페이스 연습문제 (0) | 2019.06.26 |
---|---|
8.5 추상 클래스 (0) | 2019.06.26 |
8.3 인터페이스를 상속하는 인터페이스 (0) | 2019.06.25 |
8.2 인터페이스는 약속이다 (0) | 2019.06.25 |
7.17 튜플 (0) | 2019.06.18 |