C#/클래스와 객체지향

C# 클래스와 객체지향 - 04. 메서드

tita 2024. 5. 28. 15:07

메서드의 기본적인 형태에 대해 알아보겠습니다.

[접근 제한자] [반환형] [메서드 이름] ([매개변수])
{
    [메서드 코드]
}

 

메서드는 함수와 같다고 볼 수 있습니다.

 

다양한 예제들을 통해 메서드의 생성과 사용을 알아보겠습니다.

class Program
{
    class Test
    {
        //Power 메서드는 매개변수로 들어온 int x 를 제곱하는 메서드 입니다. 
        public int Power(int x)
        {
            return x * x;
        }
    }
    
    static void Main(string[] args)
    {
        // Power 메서드는 Test 클래스 내부에 생성되어 있기 때문에 인스턴스를 생성해야 합니다.
        Test test = new Test();
        
        Console.WriteLine(test.Power(10));
        console.WriteLine(test.Power(20));
    }
}

 

 

하나의 메서드가 여러 개의 매개변수를 가지거나, 아무것도 반환하지 않을 수도 있습니다.

class Program
{
     class Test
     {
         // 매개변수로 들어온 값 두개를 리턴값으로 보내는 메서드 입니다.
         public int Multi(int x, int y)
         {
             int xy = x * y;
             
             return xy;
         }
         
         // 리턴값이 없는 메서드는 반환형을 void로 지정해줍니다.
         public void Print()
         {
             Console.WrtieLine("print 메서드 호출");
         }
     }
     
     static void Main(string[] args)
     {
         Test test = new Test();
         
         Console.WriteLine(test.Multi(10, 100);
         test.Print();
         Console.WriteLine(test.Multi(7, 8);
         test.Print();
     }
}

/*
[실행 결과]
1000
print 메서드 호출
56
print 메서드 호출
*/

 

 

 

 

[static 키워드]

 

클래스의 매개변수나 메서드는 static 키워드를 사용해서 선언하면 인스턴스를 생성하지 않고도 사용할 수 있습니다.

static 키워드를 사용해서 생성한 매개변수나 메서드는 프로그램의 실행과 동시에 메모리에 올라가게 때문에 인스턴스화해서 메모리에 올리는 별도의 작업( new Math() )을 수행하지 않아도 됩니다.

 

static 을 사용하여 생성하는 방법은 다음과 같습니다.

[접근 제한자] static [반환형] [메서드 이름] ([매개변수])
{

}

 

간단한 예제를 들어 보겠습니다.

 

class Program
{
    class MyMath
    {
        public static int Abs(int input)
        {
            if(input < 0)
            {
                return -input;
            }
            else
            {
                return input;
            }
        }
    }
    
    static void Main(string[] args)
    {
        Console.WriteLine(MyMath.Abs(1000));
        Console.WriteLine(MyMath.Abs(-123));
    }
}

/*
[실행 결과]
1000
123
*/