DevOps:leehi9817

Overload(오버로드)와 Overide(오버라이드)의 차이점 본문

백엔드 개발/Java

Overload(오버로드)와 Overide(오버라이드)의 차이점

leehi9817 2021. 12. 2. 11:02

Overload(오버로드)

오버로드는 하나의 클래스에 같은 이름의 메소드를 여러개 생성할 수 있는 기능입니다.

예시로 다음의 plus 메소드를 봅시다.

이름이 plus로 같은 메소드들을 여러개 생성해도 오류가 발생하지 않습니다.

이때 주의할 점은 메소드에 들어가는 매개변수(타입, 개수, 순서)가 달라야 한다는 점입니다.

메소드에 들어가는 인자가 같을경우 동일한 메소드가 두개 생겨 중복되는 오류가 발생합니다.

 

Overide(오버라이드)

오버라이드는 부모클래스의 메소드를 동일한 이름(이름, 리턴 타입, 시그니처가 동일)으로 자식클래스에 재작성 했을 때, 부모클래스의 메소드를 자식클래스의 메소드가 덮어쓰게 되는 현상을 말합니다.

예시로 다음의 Shape 클래스와 Ractangle 클래스를 봅시다.

Ractangle 클래스는 Shape 클래스를 상속받는 자식클래스 입니다.

Ractangle 클래스에는 Shape 클래스의 메소드와 동일한 이름의 메소드(toString, draw)가 있습니다.

이때 Ractangle 클래스의 객체를 생성하고 draw() 메소드를 호출하면 메소드가 오버라이딩 되어 부모 클래스를 무시하고 자식 클래스의 메소드가 실행됩니다.

위의 코드를 실행하였을 때 Shape 클래스의 draw()가 아니라 Ractangle 클래스의 draw()가 호출되었음을 알 수 있습니다.

Comments