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("끄아악!");
    }
}

 

 

'3_c# > C#문법' 카테고리의 다른 글

C# 배열, 컬렉션, 인덱서  (0) 2024.11.20
C# 프로퍼티  (1) 2024.11.20
C# TXT파일 접근 - StreamReader, StreamWriter  (0) 2023.07.18
C# 클래스  (0) 2023.07.15
C# 예외 처리 : 개념 정리  (0) 2023.07.13