C#
[C#] 오버로드(Overload) vs 오버라이드(Override)
키베이루
2022. 12. 31. 02:28
Overload
오버로드, 오버로딩은 같은 이름의 메서드를 여러개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술이다.
class OverloadingTest
{
public virtual void Walk()
{
Console.WriteLine("[부모] 걷다.");
}
public virtual void Walk(int count) //오버로드
{
Console.WriteLine("[부모] {0}번 걷다", count);
}
public virtual void Walk(string where_) //오버로드
{
Console.WriteLine("[부모] {0}에서 걷다", where_);
}
}
internal class Class1
{
public static void Main(String[] args)
{
OverloadingTest over = new OverloadingTest();
over.Walk();
over.Walk(10);
over.Walk("오이도");
}
}
/*
[부모] 걷다.
[부모] 10번 걷다
[부모] 오이도에서 걷다
*/
Override
오버라이드, 오버라이딩은 부모 클래스에 만든 메서드를 자식 클래스에서 다시 새롭게 만들어 사용하는 것을 말한다. 클래스 관계를 따지는 상속 개념에서 부모 클래스에 이미 만든 메서드를 동일한 이름으로 자식 클래스에서 다시 재정의해서 사용한다는 개념이다.
class Woman
{
public string name;
public int age;
public void info()
{
Console.WriteLine("이름은 {0}, 나이는 {1} 입니다", this.name, this.age);
}
}
class Job : Woman
{
public string job;
public void info()
{
Console.WriteLine("직업은 {0} 입니다.", this.job);
Console.WriteLine("이름은 {0}, 나이는 {1} 입니다", this.name, this.age);
}
}
internal class Class1
{
public static void Main(String[] args)
{
Job job = new Job();
job.name = "AAA";
job.age = 25;
job.job = "프로그래머";
job.info();
}
}
/*
직업은 프로그래머 입니다.
이름은 AAA, 나이는 25 입니다
*/