언어/C#

[C#] overloading과 overriding

돌멩이수프 2022. 4. 25. 14:29
728x90

· overloading은 같은 이름의 함수를 여러번 호출하면서 다른 방식으로 사용하는 것이다. (정의는 아님. 내 맘대로 정리한 문장)

static void Function(int a)
    {
        Console.WriteLine(a);
    }
static void Function(int a, int b)
    {
        Console.WriteLine(a + b);
    }
static void Main(string[] args)
    {
        Function(1); // 1
        Function(4, 3); // 7
    }

Function(int a)와 Function(int a, int b)는 같은 이름을 갖고 있지만 각자 원하는 인자가 다르다. 인자를 넣어주면 알아서 다른 결과값을 출력해준다. 이게 오버로딩이다.

· overriding은 부모 클래스에서 상속받은 내용을 자녀 클래스에서 다시 정의해주는 것을 말한다.

class Program
{
    public virtual void Function()
    {
        Console.WriteLine("부모 클래스");
    }
    class myClass : Program
    {
        public override void Function()
        {
            Console.WriteLine("자식 클래스");
        }
    }
    static void Main(string[] args)
    {
        myClass myclass = new myClass();
        myclass.Function();
    }
}

부모 클래스에서 상속받은 내용은 "부모 클래스"를 출력하는 것이었지만 자식 클래스에서 상속받은 내용을 재정의 했기 때문에 (== 오버라이드 했기 때문에) 출력되는 내용은 "자식 클래스" 이다.

오버로딩, 오버라이딩은 객체지향 프로그래밍이라면 모두 해당되는 내용이므로 반드시 알아두어야 한다.

728x90