개념적인 설명은 위에 답변을 하신 분들이 잘 해주셨네요..
참고로 도움이 될지는 모르겠지만..
예제 소스를 통해서 설명해볼께요..
※ 오버로드(overload)
위에 파란얼음님께서 동일한 놈들이 많다..
인자가 다른 동일 함수명의 함수가 존재할수 있다..라고 설명해 주셨습니다..
즉, 같은 Class내에서 같은 이름의 함수를 만들수 있는것이
오버로드라고 생각하시면 될거 같습니다..
오버로드를 만들때 규칙이 있습니다.
규칙은 메소드의 이름이 같고 파라미터의 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()
이해가 되셨나요??
내용중 틀린부분이 있으시면 꼬릿말 달아주세요..
저도 공부하는 입장이라 잘못 이해했을수도 있거든요..^^
참고로 도움이 될지는 모르겠지만..
예제 소스를 통해서 설명해볼께요..
※ 오버로드(overload)
위에 파란얼음님께서 동일한 놈들이 많다..
인자가 다른 동일 함수명의 함수가 존재할수 있다..라고 설명해 주셨습니다..
즉, 같은 Class내에서 같은 이름의 함수를 만들수 있는것이
오버로드라고 생각하시면 될거 같습니다..
오버로드를 만들때 규칙이 있습니다.
규칙은 메소드의 이름이 같고 파라미터의 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()
이해가 되셨나요??
내용중 틀린부분이 있으시면 꼬릿말 달아주세요..
저도 공부하는 입장이라 잘못 이해했을수도 있거든요..^^
다음검색
댓글
댓글 리스트-
작성자파란얼음 작성시간 04.04.16 ^^*..자세한 설명이네여..감솨..그러나 초보에겐 어려울듯...
-
작성자이윤성 작성시간 04.04.16 아님다 이해가 잘되네여> 감사함다
-
작성자심재운 작성시간 04.04.16 이거..강좌로 올릴께요..다른 분들이 읽기에 좋네요.
-
작성자Crazy C# 작성자 본인 여부 작성자 작성시간 04.04.17 오우!! 강좌로 올리신다구요?? 감사합니당~~!!
-
작성자whitezone 작성시간 04.04.18 오버로드는 역시.....WriteLine을 예로 드는게 짱이죠.....