규칙은 메소드의 이름이 같고 파라미터의 Type이나 파라미터에서 사용하는 수정자가 다른경우,
ex. void abc(int x){} <- 성립 -> void abc(double x) // 파라미터의 type이 다른경우
ex. void abc(int x){} <- 성립 -> void abc(ref int x) // 파라미터에서 사용하는 수정자가 다른경우
또는 파라미터의 갯수가 다른경우, 그리고 같은 파라미터 Type이고 갯수가 같아도
ex. void xyz(int x) <- 성립 -> void xyz(int x, double y) // 파라미터의 갯수가 다른경우
순서가 다른경우 오버로드를 만들수 있습니다.
ex. void xyz(int x, double y) <- 성립 -> void xyz(double y, int x) // 파라미터의 갯수는 같고 순서만 다른 경우
-> 예제 소스
public class OverLoadTest
{
public static void Add()
{
Console.WriteLine("오버로드 연습");
}
public static void Add(int x, int y)
{
int temp;
temp = x + y;
Console.WriteLine("x, y 두 수의 합은 : {0} 입니다", temp);
}
public static void Add(int x, int y, int z)
{
int temp;
temp = x + y + z;
Console.WriteLine("x, y, z 세수의 합은 : {0} 입니다", temp);
}
public static void Main()
{
Add(3, 7);
Add();
Add(10, 20, 30);
}
}
출력 :
x, y 두 수의 합은 : 10 입니다
오버로드 연습
x, y, z 세수의 합은 : 60 입니다
이해를 하셨는지 모르겠네요.
Main() 함수 부분에서 같은 이름의 메소드를 호출할때 파라미터를 어떻게
주느냐에 따라 경우에 맞는 메소드가 호출되게 됩니다.
※ 오버라이드(override)
오버라이드의 사전적 뜻을 보면 무시하다, 결정을 번복하다 라는 뜻을 가지고 있습니다.
파란얼음 님이 말씀을 하셨듯 상속에 대해서 먼저 아셔야 할것 같습니다.
오버라이드는 Class 상속을 받아서 부모클래스에 있는 메소드를 재정의해서 사용하는 것을 말하는 것입니다.
이것 또한 규칙이 있습니다.
오버라이드를 하기 위해서는 일단 상속을 받아야겠지요..
상속을 받고 부모클래스에 있는 메소드를 재정의 하기 위해서는..
부모클래스의 메소드에는 virtual선언을 해줘야하고..
재정의를 위한 파생클래스(상속받은클래스)의 메소드는 override 선언을 해주면 됩니다.
-> 예제 소스
class A
{
public virtual void Test()
{
Console.WriteLine("A class의 Test()");
}
}
class B : A // A class 를 상속받음
{
public override void Test()
{
Console.WriteLine("B class의 Test()");
}
}
class C : A
{
public override void Test()
{
Console.WriteLine("C class의 Test()");
}
}
class Test
{
public static void Main()
{
A a1 = new A();
A a2 = new B();
A a3 = new C();
a1.Test();
a2.Test();
a3.Test();
}
}
출력 :
A class의 Test()
B class의 Test()
C class의 Test()
첫댓글 ^^*..자세한 설명이네여..감솨..그러나 초보에겐 어려울듯...
아님다 이해가 잘되네여> 감사함다
이거..강좌로 올릴께요..다른 분들이 읽기에 좋네요.
오우!! 강좌로 올리신다구요?? 감사합니당~~!!
오버로드는 역시.....WriteLine을 예로 드는게 짱이죠.....