오버로딩,오버라이딩


오버로딩, 오버라이딩 두개 이름이 비슷하지만 다른 재정의 기법이다.


오버로딩(Overloading)

하나의 클래스 안에 같은 이름으로 메서드를 재정의한다.

이름은 같게 하되 매개변수의 개수 및 타입정보는 다르하면 된다.

(2번째 메서드만 에러가 나는데 첫 번째 메서드의 매개변수의 정보가 같아서 이다.)

오버 로딩은 언제 쓰나?

유사하거나 동일한 결과를 출력하는 메서드가 전달 받는 매개변수에 따라 다른 연산을 해야 하는 경우에 사용된다.

메서드마다 다른 이름을 정의 하는것 보다는 직관적이고 편리해진다. 



오버라이딩(Overriding)

오버라이딩은 상위 클래스에서 선언된 함수를 하위 클래스에서 재정의하는 것

즉 이미 정의된 메서드를 재 사용 하는 것이다.

부모클래스의 메서드는 virtual키워드를 자식클래스의 메서드는 override를 꼭 선언해야한다.

오버라이딩은 다형성을 잘 나타내는 기법이다. 

<결과>

예를 들어 Animal이라는 부모 클래스에서 "동물을 짖는다"라는 메서드를 정의했다. 

그리고 자식 클래스로 Dog,Cat클래스를 만들고 Animal클래스의 "동물은 짖는다"라는 메서드를 override하여 "멍멍","냐옹냐옹"을 추가하여 재정의 하였다. 

고양이와 강아지는 공통적으로 짖는다 라는 메서드를 사용하지만 또 각각 짖는 방법이 다르기 때문이다.

게임속에서 생각해보면 공격이라는 메서드를 갖고있는 오브젝트들이 있다고 하면 그 오브젝트들은 다른 공격 스타일을 갖고 있을 것이다.



참고 : http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=5&ID=675

https://itmining.tistory.com/36

+ Recent posts