3_c#/C#문법
C# 메소드 오버로딩 / 오버라이딩
Mi:sAng
2024. 10. 2. 21:14
[메소드 오버로딩]
-하나의 메소드를 여러 가지로 구현하는 것
class MainApp
{
static int GetRectangleArea(int width, int height)
{
return width * height;
}
static float GetRectangleArea(float width, float height)
{
return width * height;
}
static int Sum(int a, int b)
{
return a + b;
}
static int Sum(int a, int b, int c)
{
return a + b + c;
}
static void Main(string[] args)
{
Console.WriteLine(GetRectangleArea(20, 50));
Console.WriteLine(GetRectangleArea(1.2f, 3.5f));
Console.WriteLine(Sum(1, 2));
Console.WriteLine(Sum(10, 11, 12));
}
}
[메소드 오버라이딩]
-기반 클래스에서 상속받은 메소드를 파생 클래스에서 재정의하는 것.
-다형성을 구현하기 위해서 오버라이딩 사용한다.
-사용하는 경우
1).추상 클래스를 상속받아 추상메소드를 override로 구현
2).virtual 메소드가 있는 클래스를 상속 받아 override로 구현
(인터페이스는 override로 구현하지 않는다.)
//가상 함수
class ChessPiece
{
public virtual void Move()
{
Console.WriteLine("이동할 수 없음");
}
}
class Pawn : ChessPiece
{ public override void Move()
{
Console.WriteLine("이동 가능");
}
}
//인터페이스
interface ICar{
void Drive();
}
class Car : ICar
{
public void Drive(){
Console.WriteLine("Driving !");
}
}
//추상 클래스
public abstract class Monster
{
public abstract void Shout();
}
class Orc : Monster
{
public override void Shout()
{
Console.WriteLine("끄아악!");
}
}