Overloading (오버로딩)
오버로딩이란 하나의 클래스 안에서 같은 이름의 메소드를 여러개 정의(중복 정의)하는 것을 뜻한다. 일반적으로 하나의 클래스 안에 같은 이름의 메소드를 정의하게 되면 에러가 발생하지만, 오버로딩의 조건을 만족했다면 같은 이름의 메소드를 여러 개 정의할 수 있다.
Overloading 조건
- 매개변수의 개수가 달라야 한다.
- 매개변수의 타입이 달라야 한다.
// 오버로딩 조건 : 매개변수의 개수가 다른 경우
public int overloadTest(){
return 0;
}
public int overloadTest(String test){
return 1;
}
// 오버로딩 조건 : 매개변수의 타입이 다른 경우
public int overloadTest(String test){
return 1;
}
public int overloadTest(int test){
return 1;
}
오버로딩은 비슷한 기능을 가진 메소드의 이름을 지을 때, 각 메소드 별로 이름을 구별하지 않고, 하나의 이름으로 통일성 있게 정의할 수 있다는 장점을 가지고 있다. 비슷한 기능을 하는 메소드들을 하나의 이름으로 정의를 하여, 각각의 메소드들의 이름을 외우지 않아도 되며, 쉽게 사용할 수 있게 된다.
Overriding (오버라이딩)
오버라이딩이란 조상 클래스로부터 상속받은 메소드의 내용을 변경(재 정의)하여 사용하는 것이다. 상속받은 메소드를 그대로 사용할 수도 있지만, 필요에 따라 메소드를 재 정의하여 사용해야 하는 경우가 있다.
Overriding 조건
- 매개변수가 같아야 한다.
- 리턴 타입이 같아야 한다.
public class Parent {
public void overridingTest(){
System.out.println("부모 메소드의 내용");
}
}
Class Child extends Parent{
@Override
public void overridingTest(){
System.out.println("상속 받은 부모 메소드의 내용을 수정하여 자식 메소드의 내용으로 재사용");
}
}
위의 코드는 Child 클래스가 조상 클래스인 Parent 클래스의 overridingTest() 메소드를 상속받아 재사용하는 코드이다. 오버라이딩이란 메소드의 선언부는 조상 메소드와 일치하며, 메소드의 내용만 재정의하여 사용하는 것이다.
정리
오버로딩(Overloading)은 하나의 클래스 안에서 같은 이름의 메소드를 여러 개 생성(중복 정의)하여 사용하는 것이고,
오버라이딩(Overriding)은 부모로부터 상속받은 메소드를 재 정의하여 사용하는 것이다.
구분 | 오버로딩(Overloading) | 오버라이딩(Overriding) |
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
리턴 타입 | 상관 없음 | 동일 |
본 글은 아래 링크의 내용을 참고하여 학습한 내용을 나름대로 정리한 글임을 밝힙니다.
'Computer Science > 공통 요구사항' 카테고리의 다른 글
인수(Argument), 인자(Parameter)의 차이 (0) | 2022.02.23 |
---|---|
개발자 기술면접 준비 (0) | 2022.01.19 |
개발자 면접 질문(자바, 스프링) (0) | 2022.01.19 |