자바(Java)〃오버로딩과 오버라이딩의 차이

반응형

                                                    


이번글에서는 오버로딩과 오버라이딩의 차이점을 간단하게 비교하도록 하겠습니다.


두개의 기본조건을 보면 오버로딩은 하나의 클래스내에서 이루어지기 때문에 상속과 관련이 없어도 되고, 오버라이딩은 부모클래스와 자식클래스 두개 이상이 필요하므로 상속이 꼭 필요한다고 보시면 됩니다.


상속에 대한 정리  자바(Java)〃객체지향 특징 상속/캡슐화/다형성


오버로딩은?  자바(Java)〃생성자 오버로딩과 메소드 오버로딩


아참.. 이 글에 관련된 상속과 오버로딩을 정리한 저번글들을 같이 보시면 이해하는데 도움이 될거에요. 



오버로딩(OverLoading) vs 오버라이딩(OverRiding)

오버로딩은 많은 것을 싣는다, 오버라이딩은 재정의를 한다는 사전적인 의미를 가지고 있는 만큼 차이점도 이와 비슷하다고 보시면 됩니다.  오버로딩은 메소드 오버로딩을 기준으로 작성하였습니다.



1. 두개의 공통점은 메소드의 이름이 동일해야 합니다. 하지만 오버라이딩은 부모 클래스와 자식클래스에 있는 메소드라는 조건이 추가되었죠. 오버라이딩은 재정의라는 뜻을 가지고 있기 때문에 꼭 두개 이상의 클래스가 존재해야합니다.


2. 오버로딩 = 리턴타입이 달라도 무관 / 오버라이딩 = 리턴타입이 동일해야 한다.


3. 오버로딩 = 매개변수 타입의 개수와 위치가 하나라도 달라야 한다. / 오버라이딩 = 매개변수 타입의 개수와 위치가 동일.


4. 오버로딩 = 정적바인딩( 실행할 메소드를 컴파일 하는 시간에 결정 ) / 오버라이딩 = 동적바인딩( 실행할 메소드를 컴파일이 아닌 실행시간에 결정 )


5. 오버로딩은 상속이 필수조건이 아니라 하나의 클래스내에서 중복정의가 가능하죠. 하지만 오버라이딩은 무조건 자식클래스에서 부모클래스에서 선언된 메소드를 가져와 재정의하여 실행하는것이기 때문에 상속이 필수조건입니다.


추가적으로 오버라이딩에서 자식클래스(서브클래스)는 접근지정자를 부모클래스(슈퍼클래스)보다 접근지정자를 좁은 범위로 변경할 수 없다고 하니 알아두시면 좋을것 같습니다. 

반응형