오버로딩과 오버라이드의 차이점 | 오버로딩 대 재정의

게시 됨: 2021-06-15

목차

소개

객체 지향 프로그래밍은 소프트웨어 개발 분야에서 중요한 역할을 합니다. 클래스, 객체, 다형성, 상속, 데이터 추상화, 일반 프로그래밍 및 예외 처리와 같은 여러 개념이 이러한 유형의 프로그래밍과 연관됩니다.

개발자는 항상 메서드 오버로딩, 메서드 오버라이드 등과 같은 하위 개념이 있는 다형성의 개념이 매우 흥미롭다는 것을 발견합니다. 그러나 다형성의 개념을 더 잘 이해하려면 오버로딩과 오버라이드의 차이점을 이해해야 합니다.

메서드 오버로딩과 메서드 오버라이드의 차이점 - 2020 - 다른 사람

메서드 오버로딩과 메서드 오버라이드 사이에는 많은 차이점이 있습니다 . Java에서 메소드 오버로딩과 오버라이드 사이의 차이점 목록은 아래 표에 나와 있습니다.

메소드 오버로딩 메서드 재정의
1 이 방법은 프로그램의 가독성을 높이는 데 사용됩니다. 메소드는 수퍼 클래스에서 제공하는 메소드의 구현을 제공하는 데 사용됩니다.
2 클래스 내에서 수행됩니다. IS-A(상속) 관계를 갖는 두 클래스에서 발생합니다. 재정의에는 기본 및 자식 클래스가 필요합니다.
메서드나 함수는 이름이 같고 서명이 달라야 합니다. 메소드 또는 함수는 동일한 이름과 동일한 서명을 가져야 합니다.
4 이 방법에 사용되는 매개변수는 달라야 합니다. 메서드 재정의의 경우 동일한 매개변수를 사용해야 합니다.
5 컴파일 타임 다형성의 한 예입니다. 정의에 대한 오버로딩 메서드 호출의 바인딩은 컴파일 시간에 발생합니다. 런타임 다형성의 예입니다. 재정의된 메서드 호출의 정의에 대한 바인딩은 런타임에 발생합니다.
6 반환 형식을 변경해야만 메서드 오버로딩을 수행할 수 없습니다. 반환 유형은 다를 수도 있고 같을 수도 있습니다. 그러나 매개변수는 달라야 합니다. 메서드 재정의의 반환 형식은 같거나 공변할 수 있습니다.
7 메서드 오버로딩은 정적 메서드에 적용될 수 있습니다. 즉, 클래스에는 같은 이름의 정적 메서드가 두 개 이상 있을 수 있습니다. 메서드 재정의는 정적 메서드에 적용할 수 없습니다.
8 메서드 오버로딩에 정적 바인딩이 사용됩니다. 메서드 재정의에 동적 바인딩이 사용됩니다.
9 메서드 오버로딩을 통해 더 나은 성능을 얻을 수 있습니다. 메서드 오버로딩에 비해 성능이 낮습니다. 그 이유는 재정의된 메서드의 바인딩이 런타임에 수행되기 때문입니다.
10 private 및 final 메서드는 오버로드될 수 있습니다. 클래스에는 같은 이름의 private/final 메소드가 두 개 이상 있을 수 있습니다. private 및 final 메서드는 재정의할 수 없습니다. 자식 클래스는 기본 클래스의 private/final 메서드를 재정의할 수 없습니다.
11 메서드 오버로딩의 경우 상속이 필요하거나 필요하지 않을 수 있습니다. 메서드 재정의의 경우 항상 상속이 필요합니다.
12 메서드의 동작에 더 많은 것을 추가하기 위해 사용됩니다. 기존 메서드의 동작을 변경하는 데 사용됩니다.
13 메서드 오버로딩에 둘 이상의 클래스가 있을 필요는 없습니다. 메서드 재정의에는 항상 두 개 이상의 클래스가 필요합니다.
14 오버로딩이 중단되면 컴파일 타임 오류가 발생하고 쉽게 수정할 수 있습니다. 중단을 재정의하면 런타임에 효과가 표시되기 때문에 프로그램에 심각한 문제가 발생할 수 있습니다.
15 메서드 오버로딩에는 다른 서명이 있어야 합니다. 메서드 재정의에는 동일한 서명이 있어야 합니다.
16 오버로딩 메서드의 액세스 한정자는 무엇이든 될 수 있거나 다를 수 있습니다. 하위 클래스 메서드의 액세스 수정자는 재정의 메서드의 슈퍼클래스 메서드 액세스 수정자와 같거나 높아야 합니다.
17 throw되는 예외는 메서드 오버로딩의 개념에서 무엇이든 될 수 있습니다. 메서드 재정의에서 throw되는 확인되지 않은 예외는 무엇이든 될 수 있습니다. 확인된 예외의 경우 재정의 메서드는 재정의된 메서드에서 선언한 것보다 새롭거나 더 광범위한 예외를 throw해서는 안 됩니다.
18 컴파일러는 항상 참조 유형을 기반으로 메서드 확인을 처리합니다. JVM은 런타임 개체를 기반으로 메서드 해결을 처리합니다.

세계 최고의 대학에서 온라인으로 소프트웨어 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

다음은?

풀스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 풀스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오. 이 프로그램은 일하는 전문가를 위해 설계되었으며 500 시간 이상의 엄격한 교육, 9 개 이상의 프로젝트 및 과제, IIIT-B 동문 상태, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

런타임 다형성이란 무엇입니까?

런타임 다형성은 동적 타이핑을 포함하는 일종의 다형성입니다. 이는 개체가 단일 유형인 것처럼 조작될 수 있음을 의미합니다. 이는 객체가 기본 유형에 관계없이 단일 유형인 것처럼 조작되는 정적 다형성과 유사합니다. 5대 소프트웨어 설계 원칙 중 하나입니다. 객체 지향 프로그래밍과 함께 사용됩니다. 이는 변수가 런타임 조건에 따라 다른 개체를 참조할 수 있음을 의미합니다. 예를 들어, 변수가 선언될 때 Dog 객체를 참조하기 위해 변수를 사용할 수 있지만 프로그램 실행 중에는 변수가 Cat 객체를 참조할 수 있습니다. 자동 유형 변환입니다. 예를 들어 정수 변수 i가 있고 여기에 문자열 값을 할당하면 문자열 변수가 됩니다.

재정의는 오버로딩과 어떻게 다릅니까?

오버로드된 메서드를 재정의할 수 있습니까?

오버로드된 메서드는 일반 메서드와 동일하지만(매개변수의 수 및 유형 측면에서) 오버로드된 메서드는 일반 메서드와 다른 형식의 매개변수를 허용할 수 있는 방식으로 작성되었다는 차이점이 있습니다. 일반 메서드를 재정의하는 것과 같은 방식으로 오버로드된 메서드를 재정의할 수 있습니다.