일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 유니티공부
- c#코딩기초트레이닝
- c#코테
- 유니티
- c# c#프로그래머스
- 유니티서바이벌게임만들기
- 오블완
- unity게임만들기
- C#문법
- unity3d
- c# 백준
- c#프로그래머스기초문법
- 티스토리챌린지
- unity3dservival
- Console.WriteLine
- 유니티상호작용
- 유니티3dui
- 유니티게임만들기
- c#문제
- Unity
- c#
- c#기초문법
- unity3d게임만들기
- 스파르타
- 시샵
- 스파르타코딩클럽
- c#기본문법
- unity공부
- 시샵문법
- unity게임
- Today
- Total
나 개발자 진짜 되냐?
[ C# 기본 문법 19 ] 인터페이스와 열거형 본문
인터페이스 와 열거형에 대해 알아보자!
🌟 인터페이스 🌟
클래스가 구현해야 하는 멤버들을 정의
클래스가 아니라, 제약 조건을 명시!
클래스가 인터페이스를 구현할 경우,
모든 인터페이스 멤버를 구현
인터페이스는 다중 상속을 지원
interface IMyInterface
{
void Method1();
int Method2(string str);
}
인터페이스
규칙 1
시작은 interface
규칙2
변수 이름 앞에 I 붙여주기
class MyClass : IMyInterface
{
public void Method1()
{
// 구현
}
public int Method2(string str)
{
// 구현
return 0;
}
}
상속과 크게 다르지 않다.
인터페이스에 있던
모든 메서드를 다 쓰는 것이 중요하다!
선언할 땐
똑같이
new를 사용해서 구현한다.
// 아이템을 사용할 수 있는 인터페이스
// 인터페이스 설정
public interface IUsable
{
void Use();
}
// 아이템 클래스
public class Item : IUsable
//인터페이스를 써주었으니 use가 있어줘야한다.
{
//get,set 배웠듯 중간다리 역할을 해주는 친구! + 필드 역할까지
public string Name { get; set; }
public void Use() // 인터페이스때문에 써야한다!
{
Console.WriteLine("아이템 {0}을 사용했습니다.", Name);
}
}
// 플레이어 클래스
public class Player
{
public void UseItem(IUsable item) // 아이템에서 가져오는거지만
//인터페이스로 맨 처음에 만들었기 때문에 인터페이스것을 가져와야 한다.
//상속이라 별 차이없는거같지만 인터페이스에서 참조해서 가져오는 것
{
item.Use();
}
}
// 게임 실행
static void Main()
{
Player player = new Player();
// {} 는 초기화 해준것!
Item item = new Item { Name = "Health Potion" };
player.UseItem(item);
}
예시문을 참고하며
인터페이스가 무엇인지
어떻게 선언하고 구현하는지
익혀보자!!
중요한 것은
아이템을 우리는
인터페이스에서 만든 아이템을
상속받아서 사용한 것
아이템의 종류가 다양하다면,
그 애들을 하나의 클래스로 만드는 것이 아니기 때문에
Iusable를 상속받아서 써주면
player.UseItem(item);
메서드를
가져와서 사용이 가능하다!
물체에게 하나의 동작을 심어주는 느낌이다.
상속 상속이라고 해서
추상클래스랑 헷갈리는 경우가 있는데
추상클래스와 인터페이스의 장단점을 정리했다.
인터페이스
< 장점 >
추상적인 동작만 정의하고 구현을 가지지 않는다.
다중상속 가능 ( 클래스가 아니기 때문 )
여러 클래스가 동일한 인터페이스 구현 가능
코드 재사용 파워 가능
< 단점 >
인터페이스를 구현하는 클래스는
그 인터페이스 안에 있는 동작을 모두 해주어야 하기 때문에
작업량이 걱정
추상 클래스
< 장점 >
일부동작의 구현, 추상 메서드를 포함 가능
단일상속만 가능
다른 클래스와 상속 가능
공통된 동작만 추상화,
하위 클래스에서 재정의 할 필요 없음
< 단점 >
다중상속 불가
누가 뭐래도 상속이기 때문에
유연성이나 약간의 제약이 있을 수 있음
상속을 받아서 동작 필요 : 추상 클래스
특정한 기능들의 호환성 : 인터페이스
🌟 열거형 🌟
일련의 연관된 상수들을 이름 지어주면서
코드의 가독성을 높여준다.
////////////열거형 정의//////////
enum MyEnum
{
Value1, // 상수값 0
Value2, // 상수값 1
Value3 // 상수값 2
}
////열거형 상수 값 지정////
enum MyEnum
{
Value1 = 10, // 상수값 10
Value2, // 상수값 11
Value3 = 20 // 상수값 20
}
////////////열거형 사용//////////
MyEnum myEnum = MyEnum.Value1;
////////////열거형 형변환//////////
int intValue = (int)MyEnum.Value1; // 열거형 값을 정수로 변환
MyEnum enumValue = (MyEnum)intValue; // 정수를 열거형으로 변환
////스위치문과 함께 사용/////
switch(enumValue)
{
case MyEnum.Value1:
// Value1에 대한 처리
break;
case MyEnum.Value2:
// Value2에 대한 처리
break;
case MyEnum.Value3:
// Value3에 대한 처리
break;
default:
// 기본 처리
break;
}
좋은 예시를 가져왔다.
// 월 열거형
public enum Month
{
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
}
// 처리하는 함수
static void ProcessMonth(int month)
{
if (month >= (int)Month.January && month <= (int)Month.December)
{
Month selectedMonth = (Month)month;
Console.WriteLine("선택한 월은 {0}입니다.", selectedMonth);
// 월에 따른 처리 로직 추가
}
else
{
Console.WriteLine("올바른 월을 입력해주세요.");
}
}
// 실행 예제
static void Main()
{
int userInput = 7; // 사용자 입력 예시
ProcessMonth(userInput);
}
예시를 보면서
열거형은 특히 더 자세히 보도록 하자!\
중요하고 어려운건..
형변환인 거 같다.
'C# 을 맛보았어요! > 문법정리를 해보았어요!' 카테고리의 다른 글
[ C# 기본 문법 21 ] 값형과 참조형 / 박싱과 언박싱 (0) | 2024.09.23 |
---|---|
[ C# 기본 문법 20 ] 예외 처리 (0) | 2024.09.23 |
[ C# 기본 문법 18 ] out 과 ref (1) | 2024.09.23 |
[ C# 기본 문법 17 ] 제너릭 (0) | 2024.09.23 |
[ C# 기본 문법 16 ] 상속과 다형성 (0) | 2024.09.23 |