메서드로 코드 간추리기

Coding Cat·2024년 7월 3일

C#

목록 보기
4/11

params

params 키워드와 배열을 이용하여 선언한다.

메서드에서 가변 인수 목록을 처리할 때 사용된다. 메서드를 호출 시 인수의 개수를 동적으로 결정할 수 있다.

public void Method(params TypeName[] paramName)
{
    // 메서드 본문
}

params 키워드 뒤에는 추가 매개 변수 사용 불가하다. params 매개 변수의 형식은 1차원 배열이어야 한다.

명명된 인수

메소드 호출시 매개 변수의 이름을 명시하여 매개변수에 데이터를 바인드하는 기능이다. 가독성이 좋다.

static void PrintProfile(string name, string phone){
	Console.WriteLine("Name:{0}, Phone:{1}", name, phone);
}
static void Main(string[] args){
	PrintProfile(name:"박찬호", phone:"010-123-1234"};
}

선택적 인수

메소드 선언시 매개 변수에 기본값을 할당한다.
메소드를 호출시 해당 인수 생략이 가능하다.

void MyMethod(int a=0,int b=0){
	Console.WriteLine("{0},{1}",a,b);
}

MyMethod(3); // 매개변수 b생략

메소드 숨기기

메서드 숨기기는 베이스 클래스 메서드가 가상으로 선언되지 않더라도 new 키워드로 메서드를 다시 구현하는 것을 말한다.

class BaseClass
{
    public void MethodToHide()
    {
        Console.WriteLine("Base class method.");
    }
}

class DerivedClass : BaseClass
{
    public new void MethodToHide()
    {
        Console.WriteLine("Derived class method.");
    }
}

// Usage:
BaseClass baseObj = new BaseClass();
DerivedClass derivedObj = new DerivedClass();

baseObj.MethodToHide();     // Output: Base class method.
derivedObj.MethodToHide();  // Output: Derived class method.

객체를 참조할 때, 해당 클래스의 참조 변수를 통해 참조한다. 하지만, 자식 클래스들이 많을 경우에는 부모 클래스를 통해 자식 클래스를 가리키는 업 캐스팅을 이용한다.

부모 클래스 기반으로 자식 객체를 인스턴스화하면 부모 클래스의 메소드가 실행된다. 이 점이 오버라이드와의 차이점이다.

BaseClass obj = new DerivedClass();

obj.MethodToHide();     // Output: Base class method.

협업자가 이런 의도를 알아차리려면, 파생 클래스를 열어봐야하므로 일반적으로는 overriding을 쓴다.

사용하는 이유

부모 클래스의 메서드가 virtual로 선언되지 않았는데, 메서드를 다시 구현해야 하는 경우 사용할 수 있다.

부모 클래스의 메서드에 영향을 주지 않고 특정 메서드를 다시 구현해야 하는 경우 사용할 수 있다.

즉, 메서드 숨기기의 주요 목적은 부모 클래스의 멤버를 보호하는 것이다. 

profile
나의 archive

0개의 댓글