[OOP] Overloading VS Overriding

임수정·2024년 6월 27일
0

📝 Learning Log

목록 보기
17/47
post-thumbnail

📍 오버로딩(Overloading)

같은 이름의 메소드나 함수를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하여 다양한 상황에서 호출할 수 있도록 하는 기법

📖 주요특징

메소드 이름 동일 : 오버로딩된 메소드는 동일한 이름 사용

매개변수 차이 : 오버로딩된 메소드들은 매개변수의 타입, 개수, 순서 등에서 차이가 있어야함

반환타입만 다른경우 : 매소드의 반환 타입만 다른 경우는 오버로딩으로 인정되지 않음(꼭 매개변수가 달라야함)

📍 오버라이딩 (Overriding)

상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의해서 사용하는 기법

상속관계에서 하위 클래스는 상위 클래스의 메소드를 자신의 필요에 맞게 재정의 가능

📖 주요특징

메소드 이름 == 시그니처 : 오버라이딩된 메소드는 상위 클래스의 메소드와 메소드 이름과 시그니처(매개변수 타입, 개수, 순서)가 동일해야함

상속 관계 : 오버라이딩은 상위 클래스에서 정의된 메소드를 하위 클래스에서 다시 정의하여 사용하는 것 == 상속관계

다형성 지원 : 상위 클래스 타입으로 선언된 객체가 실제로는 하위 클래스의 인스턴스일 때, 오버라이딩된 메소드 호출


📖 요약

📁 오버로딩(Overloading)

  • 매서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는 것을 의미

  • 리턴값만 다르게 갖는 오버로딩은 작성할 수 없음

  • 기존에 없던 새로운 메서드를 정의하는 것

📁 오버라이딩(Overriding)

  • 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것을 의미

  • 매서드 이름은 물론 파라미터의 개수나 타입도 동일해야하며, 주로 상위 클래스의 동작을 상속받는 하위 클래스에서 변경하기 위해 사용

  • 상속받은 메서드의 내용만 변경하는 것

profile
언어는 거들 뿐...

0개의 댓글