Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

메서드 오버라이딩 / 메서드 숨기기 본문

프로그래밍 언어/C#

메서드 오버라이딩 / 메서드 숨기기

야식은진리다 2019. 12. 28. 13:34

메서드 오버라이딩은 부모 클래스에서 정의한 메서드를 자식클래스에서 재정의 하는것을 말한다.

 

메서드 오버라이딩을 하기위해서는 부모 메서드의 오버라이딩할 메서드가 virtual로 수식되어있어야 하고, 자식 클래스에서는 오버라이딩을 할 메서드를 override로 수식해주면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Animal
{
    public virtual void Bark()
    {
        Console.WriteLine("짖는다.");
    }
}
 
class Dog : Aniaml
{
    public override void Bark()
    {
        Console.WriteLine("멍멍");
    }
}

 

메서드 숨기기라는 것도 있다. 메서드 숨기기는 자식클래스에서 부모 클래스에 선언된 메서드와 같은 이름의 메서드를 new 키워드로 수식하여 선언하는 방법이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Animal
{
    public void Bark()
    {
        Console.WriteLine("짖는다.");
    }
}
 
class Dog : Aniaml
{
    public new void Bark()
    {
        Console.WriteLine("멍멍");
    }
}

 

메서드 오버라이딩과 메서드 숨기기는 겉보기에는 같아보이지만 큰 차이점이 있다.

 

1
2
Dog dog = new Dog();
dog.Bark(); //"멍멍" 출력!

 

위의 경우에는 두 방식 모두 같은 결과를 보이지만,

1
2
Animal dog = new Dog();

 

위와 같은 경우에는 메서드 오버라이딩에서는 "멍멍"을 출력하는 반면, 메서드 숨기기 방식에서는 "짖는다."가 출력된다. 말그대로 메서드 숨기기는 하위메서드에서 잠시 숨길뿐인 것이다.

'프로그래밍 언어 > C#' 카테고리의 다른 글

인터페이스 interface  (0) 2019.12.28
확장 메서드  (0) 2019.12.28
is와 as  (0) 2019.12.28
로컬 함수  (0) 2019.12.27
선택적 매개 변수  (0) 2019.12.27