Wanna be Brilliant Full-Stack Developer

C# Winforms 오버라이딩과 오버로딩 본문

Some Memos/C#

C# Winforms 오버라이딩과 오버로딩

Flashpacker 2023. 4. 13. 11:39

오버로딩과 오버라이딩은 이름이 비슷하다는 이유로 많이 헷갈려한다.

오버라이딩 같은경우에는 오버라이드라는 키워드를 가지고 있다. 

오버라이딩은 상속과 관련이 있는 내용이고

오버로딩과 같은경우는 메소드와 관련이 있다.

 

지난번에는 버튼을누르면 이동하는거였는데 이번에는 키보드를 통해서도 쭉 움직일 수 있도록 해보려고 한다!

구조도 이런방식으로 변경해보려고 한다! 

 

오버라이드 키워드의 특징은? 부모클래스에서는 virtual을 설정하고 자식 클래스에서는

override로 정의한다!

이놈이 부모라고 정의를 한것이고! 

자식 클래스에서는

 

      public override void fMove(int iMove)
        {
            base.fMove(iMove);

            fCircle2Move(iMove);
        }

base 함수를 통해 부모 클래스의 함수를 그대로 호출을 할 수 있다.

 

오버라이드 같은 경우에는 상속과 관계가 있다고 보면 된다.

부모에 있는것을 가장 맨위에 있는 함수에다가 virtual이라고 내가 부모라고 붙여 주면 된다.

밑에서 쓰는 자식에서 쓰는 애들은 오버라이드 키워드만 붙여주면 된다.

부모에 있는 함수들을 호출해서 사용하면 그대로 호출이 된다.

 

오버라이드를 쓰기 위해서는 구조적인걸 이해를 하고 있어야한다! 

 

 

오버로딩이 먼지 알아보자! 함수와 연관이 있는데?!

옆에 보면 +1 오버로드라고 보인다. 이 함수의 이름을 가지고 있는 함수가 하나 더있다는 것이다.

여길 보면 차이가 조금 난다.

 

여길 보면 우리가 만들었던 함수들이 다 나오고 있다.

penInfo를 오버로딩 받아서 가져올 수 있다는것이다?!

인자만 다르게 하면 된다! 

이렇게 보면 오버로딩한 함수가 +1 로 추가가 되어서 그대로 보이는것이 보인다

 

똑같은 이름으로 이렇게 여러개의 함수를 만들 수 있다! 

오버라이드는 상식, 오버로딩은 메소드 관련 된 내용이라고 비교할 수 있다.

오버라이드 자체는 키워드를 외우면 될듯하다.

 

이제는 키 다운 이벤트조건을 추가해보려고 한다!

이제 Key를 누르면 저 메소드 안에 들어오게 된다!

컨트롤에 대한 키보드 이벤트를 폼에도 받을지 설정하는것인데 true라고 하면 받아진다.

 
        /// <summary>
        /// 그려놓은 그림을 이동 시킵니다. 
        /// </summary>
        /// <param name="iMove"></param>
        private void fMoveing(int iMove)
        {
            fClearPanel();

            switch (lblName.Text)
            {
                case "외발 자전거":
                    _cOC.fMove(iMove);
                    fOneCycleDraw();
                    break;
                case "자전거":
                    _cC.fMove(iMove);
                    fCycleDraw();
                    break;
                case "자동차":
                    _cCar.fMove(iMove);
                    fCarDraw();
                    break;
                default:
                    break;
            }

        }

지난번에 거의 같은 기능을 가지고 있는 애들이 있으면 이렇게 함수로 묶어줘서 사용하면 코드가 간결해진다.