Unity3d C# toolba 사용해보기

C#에서의 오버라이딩과 다형성 ( Overriding and polymorphism )




이번에 알아보려고 하는 것은 C#의 Overriding(오버라이딩)과 (polymorphism)다형성입니다.

학교 다닐때 배웠던 내용이 언 듯 기억이 나기도 하고 가물가물하네요..

오버로딩(Overloading)과 오버라이딩(Overriding)이 라는 말이 햇갈리네요..

정리하자면.. 오버로딩은 메소드에서 지난번에 포스팅했듯이.. 같은 이름으로 매개변수의 갯수나 타입 등으로 전혀 다른 마치 동명이인과 같은 일을 하는 것을 만들 수 있 다는 것이라고 했었죠…

Overriding은 클래스의 상속관계에서 사용하는 개념으로 전혀 다른 의미로 재정의 한다 라는 뜻입니다. 이번 시간에 알아보고자 하는 것이고요..

다형성이라는 개념과 같이 짝을 이루어서 다니죠..  다형성은.. 객체가 여러가지 형태를 가질 수 있다는 말입니다..  줄여서 표현한 것 같네요..

객체가 다형성을 갖기 위해서 오버라이딩을 이용 한다는 것인데요..  

객체는 재정의을 해서 다양한 형태를 갖을 수 있다… 라고 설명을 할 수 있겠습니다.

근데 말이 너무 어렵네요..;;

아래 표를 본다면.. MainBase라는 클래스가있는데 virtual이라는 약속된 문자를 사용하여  Overriding할 수 있게 하였습니다.

그리고  바로 아래에 보면.. Test1 : MainBase 이렇게 지정하여 해당클래스가 : [클론]뒤에 나오는 클래스를 상속한다고 지정하였으며..  해당클래스가 포함하는 메소드의 앞부분에

override 라는 키워드를 사용하여 오버라이딩한다는것을 표현했습니다.

C# Overriding



제가 이해한것을 한마디로 표현하자면 재정의와 다형성이라는 것은 기존의 클래스로부터 물려받은 자료에 내가 필요한 내용을 덧붙여 새로운 성격의  메소드를 만드는 것이라고 하겠습니다.


이것은... virtual로 상속받은 메소드를 덧붙여 내스타일로 메소드를 재정의 하는것이 죠..



추가되는 내용에 따라 성격이 달라질 수 있기 때문에 다형성이라는 말이 어울리겠네요..

아래는 overriding에 대한 예제입니다.

C# Overriding Example


MainBase클래스의 Mb01()이라는 메소드를 virtual키워드를 이용하여 재정의 할 수 있게 하였고 하단의 클래스들에 override라는 한정자를 지정하여 구현하여 봤습니다.


또한.. 이것을 봉인하고 싶다고 한다면..

sealed라는 한정자를 두면 됩니다.

class Base
{
    public virtual void Test()
    {
            ..
    }
}

class Sub : Base2
{
    public sealed void Test()
    {
      ...
    }
}


Base2를 재정의 하려고 하는 클래스가 있다면.. 에러를 뿌려주게 됩니다.

위의 소스까지는 상속이 되겠죠.. 아래에 Base2를 상속 하려고 하는 것이 안되는 것입니다.



아직 100%감이 안 잡혀서.. 좀 연구하고 테스트도 더 해 봐야겠습니다.

이상으로 C#에서의 오버라이딩과 다형성에 대해 알아봤습니다.









댓글