[C#] Sealed class의 이해 및 params

Yoo Hyung Joo ·2023년 10월 23일
0

sealed

C#과 같은 객체지향 프로그래밍 언어에서는 추상클래스나 상속을 이용해 코드를 좀 더 간결하고 재활용 가능하게 쓴다. sealed는 그와 다르게 상속을 제한하는 클래스이다.

sealed는 한국어로 봉인된 이라는 뜻을 가지고 있다. 어떠한 클래스에 sealed라는 키워드가 있으면 더 이상 상속이 불가능 하다는 뜻을 가진다. 이 키워드는 클래스 뿐만 아니라 속성에도 사용이 가능하다.

ex)

public sealed void Attck()
{
	Console.WriteLine("Attack);
}

이러한 방식으로 메소드를 생성하면 이 메소드를 가지고 있는 클래스를 상속하면 Attack()이라는 메소드는 재정의가 불가능해진다.

느낀점

불필요한 기능을 추가하지 못하게 하거나 확실하게 메소드 재정의를 막기 위해서 사용하는 키워드이다. 이러한 sealed를 잘 사용하지는 않을 수 있지만, 좀 더 제한적이고 개발자 입장에서 실수하지 못하게 하려면 이러한 sealed라는 키워드를 사용하는 것이 도움이 될 것 같다.


params 키워드

C# params는 가변인자 매개변수라 한다.

가변인자 매개변수란?
함수의 매개변수를 직접 개수를 넣어서 함수를 만들게 된다 ex) void Attack(float range,int damage)

하지만 params 키워드를 사용하게 되면 매개변수로 값을 넘겨줄 때 제한 없이 넘겨줄 수 있다.

public void Attack(params object[] vals)
{
	if (vals.Length > 0)
    {
     	int damage = (int)vals[0];
        float range = (float)vals[1];
    }
}

물론 이러한 방식으로 쓰이진 않겠지만 함수 매개변수로 params 키워드를 사용하면 매개변수 개수를 원하는 만큼 넣어줄 수 있기 때문에 매개변수로 몇개가 들어가지 모르는 경우 사용해주면 굉장히 편하게 사용할 수 있다.

느낀점

params 키워드가 C#프로젝트를 볼 때 가끔 봤었는데 이렇게 무슨 역할을 하는지 보니까 신기했다. params를 써 본적은 한 번도 없었다. 나중에 쓸 일이 생기면 한 번 사용해보면 편리할 것 같다.

profile
성장을 멈추지 않는 개발자

2개의 댓글

comment-user-thumbnail
2023년 10월 24일

상진아 고맙다~~~

답글 달기
comment-user-thumbnail
2023년 10월 24일

나이스

답글 달기