[내일배움캠프 2주차] C# 인터페이스, 열거형, 예외처리

하얀요니콘·2025년 7월 9일
0

다음 델리게이트까지 공부하였지만, 우선 오늘은 위에 언급한 인터페이스, 열거형, 예외처리만을 다룬다. 델리게이트는 내용이 많고, 복습도 할거라, 내일 작성한다.

Interface

다른말로, 무엇을 하기 위한 틀을 준비해준다.
Interface내부에서는 내부 인자가 없으며, 모든 메서드는 정의를 해주지 않은채로 둔다. 이제 Class는 이 Interface를 상속받아 해당 메서드들을 재정의 해준다.
Interface는 주로 네이밍을 할때 I(name) 이렇게 명명한다. 앞에 I가 붙는다는 소리이다.

그래서 인터페이스를 왜쓰냐? 생각해보면 abstract클래스가 있으니 그럴만 하다.

인터페이스의장점은 인터페이스는 다중상속이 가능하다.
C#은 결국 부모 클래스는 하나밖에 상속을 못 받는다. 여러 상속관련 문제가 존재하기 때문인데, 간단하게 하나만 보자면 B가 A를 상속받고 C가 A를 상속받은 후 D가 B와 C를 모두 상속받으면 문제가 생기는 다이아몬드 문제가 있다.

결국 abstract클래스도 클래스이기에, 하나밖에 상속을 못하는데, 인터페이스의 경우 여러개가 상속 가능하다. 그러기에 쓴다고 보면 된다.

열거형 Enum

열거형.. Enum이다. 결국 보기 편하라고 쓰는것이지만, 간단하게 생각하면 새로운 타입을 만들어 준다고 봐도 된다. 물론 이것까지는 아는내용이라 간단히만 넘어간다.

이제 열거형에 int 값을 대입이 가능하다. 그리고 처음 숫자를 잘 넣어주면, 뒤에거는 알아서 잘 따라온다.

enum Week
{
	Monday = 1,
    Tuesday, ...
};

이렇게 정의하면 Tuesday는 바로 2가 들어가는 방식이다.
숫자로 형식값을 불러오거나, 받아오는것도 가능한데, 나는 이름을 보고 사용하는 경우가 많아서 잘 사용하지는 않는다.

Player player = new Player(name, (PlayerClassType)Enum.Parse(typeof(PlayerClassType),classNum.ToString()));

이 스니팻을 보면 이해가 될거다. 숫자를 PlayerClassType으로 받기 위해, PlayerClassType.Parse(typeof(Enum형식), int.Tostring()) 의 형식이다.. 복잡해서 잘 쓰지는 않고 이름으로 가져오는 경우가 많은데, 이는 반복문에서는 유용하게 사용이 가능할 것이다.

예외처리 try catch

try catch는 알고 있다. try에서 에러가 터지마녀 exception을 던져서 catch문을 실행한다. 하지만 여기서 추가적으로 배운 finally가 있다.

finally는 try에서 에러가 떠서 catch문에 들어가든, 안뜨고 실행되든, finally문은 반드시 실행된다. 물론... finally문은 생략이 가능하다.

catch에서 오류를 해결해주고 계산을 하려면, finally에 들어가면 될것 같다.
추가적으로 catch는 위에서 먼저 일어난것부터 실행되니 참고하자 (어찌보면 당연하다.)

커스텀 Exception

커스텀으로 Exception을 만들 수도 있다. 이는 Exception이라는 클래스를 상속받아 만들어 주면 된다고 한다.
이제 이 에러가 떴다고 생각하면 아래처럼 처리해주면 된다.

try
{
throw new CustomException("Message") 
}
catch(CustomException e)
{
...
}

오늘은 이를 공부하고, 추가적으로 배운 델리게이트를 활용하여 이번주 개별과제를 하였다.
그래서 델리게이트는 다음시간에 다시 정리하면서 설명한다.

profile
코딩공부용

0개의 댓글