IT/C#

9. C# 다형성 (Polymorphism)

Clair_de_Lune 2023. 12. 1. 11:14
728x90

 

다형성 (Polymorphism)

: 한 객체가 여러 가지 타입을 가질 수 있는 특성 ( 같아보이지만 달라보이는 느낌 )

 

 


 

 

메서드 오버로딩 (Method Overloading)

 

같은 이름의 메서드를 여러 개 정의로 각 메서드가 다른 타입의 매개변수를 받아들이는 방식

 

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public float Add(float a, float b)
    {
        return a + b;
    }
}

 

 

 

코드 

  • 두 숫자의 합을 계산하는 메서드

  • 정수 두 개나 실수 두개를 받아들이는게 가능

  • 메서드 오버로딩을 사용
  • 'Add' 라는 같은 이름의 메서드를 두 번 정의

  •  'Add' 메서드를 호출할 때  타입에 따라  메서드가 실행 

 

메서드 오버라이딩 (Method Overriding)

 

부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의하는 방식

 

(상속 관계에 있는 클래스 간에 발생하는 특이 형태 형태의 다형성)

이렇게 하면, 자식 클래스에서 새로 정의한 메서드를 사용

 

public class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("The animal speaks.");
    }
}

public class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("The dog barks.");
    }
}

 

코드설명

 

  • Dog' 클래스는 'Animal' 클래스를 상속받고 있고

  • 'Speak' 메서드를 오버라이딩

  • 'Dog' 클래스의 인스턴스에서 'Speak' 메서드를 호출  ㅡㅡ>>>  "The dog barks."라 출력

 


 

virtual public void Bark() 

가상의 

버츄얼 이 있는 메소드를 가상 메소드라함 

728x90