언어/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