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 |
Tags
- 자료구조
- thread
- 벡터
- 배열
- 기술면접
- 인프런
- 힙영역
- 스택영역
- c#
- Queue
- 객체지향
- vector
- 스택
- 트리
- list
- 차이점
- 반복문
- 리스트
- 해쉬맵
- 멀티쓰레드
- std::unordered_map
- 알고리즘
- 프래그멘테이션
- map
- MonoBehaviour
- static_cast
- 공부
- rookiss
- std::map
- 큐
Archives
- Today
- Total
호빵의 IT 개발소
[C#] Interface 본문
abstract
C#에서는 다중으로 추상클래스를 상속할 수 없습니다. (C++에서는 가능)
사용범위가 굉장히 제한되어 있다.
class Program
{
abstract class Monster //추상클래스
{
public abstract void Shout(); //자식 클래스에서 Shout를 무조건 override를 해야함
}
class Orc : Monster
{
public override void Shout()
{
Console.WriteLine("우어어!!!!!");
}
}
class Skeleton : Monster
{
public override void Shout()
{
Console.WriteLine("끼에엑!!");
}
}
static void Main(string[] args)
{
//Monster monster = new Monster(); - Program.Monster 추상 클래스 또는 인터페이스의 인스턴스를 만들 수 없음.
}
}
interface
여러개의 interface를 동시에 가지고 있어도 문제가 없다.
인터페이스를 사용할때는 구현을 하지 않고 어떤 모양인지만 나타낸 다음 실제로 사용 할 때는 상속 받은 곳에서 직접 구현을 해주어야 합니다.
class Program
{
abstract class Monster //추상클래스
{
public abstract void Shout(); //자식 클래스에서 Shout를 무조건 override를 해야함
}
interface IFlyable
{
void Fly(); //fly라는 모양만 잡아준다.
}
class Orc : Monster
{
public override void Shout()
{
Console.WriteLine("우어어!!!!!");
}
}
class FlyOrc : Orc, IFlyable //interface를 이용한 다중 상속
{
public void Fly() //fly를 여기서 직접 구현한다.
{
}
}
class Skeleton : Monster
{
public override void Shout()
{
Console.WriteLine("끼에엑!!");
}
}
static void Main(string[] args)
{
//Monster monster = new Monster(); - Program.Monster 추상 클래스 또는 인터페이스의 인스턴스를 만들 수 없음.
}
}
※우리가 추상클래스 혹은 인터페이스를 사용하는 이유는 어떤 특정 클래스가 내가 원하는 인터페이스에 즉 특정 시그니처의 기능을 제공하기 위해 사용하는 것입니다.
---------------------------------------------------------------------------------------------------------------------------
참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
'C#, 유니티 > C# 기초' 카테고리의 다른 글
| [C#] Delegate (대리자) (0) | 2022.01.09 |
|---|---|
| [C#] Property (0) | 2022.01.09 |
| [C#] Generic(일반화), object (0) | 2022.01.09 |
| [C#] 문자열 (0) | 2022.01.04 |
| [C#] 다형성 (0) | 2022.01.03 |
Comments