이번 피드에서는 오버로딩과 오버라이딩에 대해 정리해보겠습니다.
오버로딩(Overloading)
오버로딩이란 하나의 클래스 안에서 같은 이름의 메서드를 여러개 정의하는 것을 뜻합니다.
일반적으로 하나의 클래스 안에 같은 이름의 메서드를 정의하게 되면 에러가 발생하게됩니다.
이때, 오버로딩의 조건을 만족하면 같은 이름의 메서드를 여러개 정의 할 수 있습니다.
오버로딩(overloaing) 조건
- 매개변수의 개수가 달라야 한다.
- 매개변수의 타입이 달라야 한다.
오버로딩의 조건은 위와 같습니다.
코드를 통해 오버로딩 예시를 살펴보겠습니다.
Ex 1 ) 매개변수의 개수가 다른경우
두 메서드의 매개변수의 개수가 0개, 1개(String test)로 다르다.
1
2
3
4
5
6
7
8
|
// 오버로딩 조건 : 매개변수의 개수가 다른경우
public int overloadTest() {
return 0;
}
public int overloadTest(String test) {
return 1;
}
|
cs |
Ex 2) 매개변수의 타입이 다른경우
두 메서드의 매개변수의 타입이 String, int로 다르다.
1
2
3
4
5
6
7
8
|
// 오버로딩 조건 : 매개변수의 타입 다른경우
public int overloadTest(String test) {
return 1;
}
public int overloadTest(int test) {
return 1;
}
|
cs |
위와 같이 한개의 클래스 안에서 오버로딩의 조건에 따라 같은 이름의 메서드를 정의할 수 있습니다.
오버로딩은 비슷한 기능을 가진 메서드들의 이름을 지을때, 각 메서드별로 이름을 구별하지 않고, 하나의 이름으로 통일성 있게 정의할 수 있다는 장점을 가지고 있습니다.
비슷한 기능을 하는 메서드들을 하나의 이름으로 정의를 하여, 각각의 메서드들의 이름을 외우지 않아도 되며, 쉽게 사용할 수 있게됩니다.
오버라이딩(Overriding)
오버라이딩이란 조상 클래스로부터 상속받은 메서드의 내용을 변경(재 정의)하여 사용하는 것이다.
상속받은 메서드를 그대로 사용할 수도 있지만, 필요에 따라 메서드를 재정의 하여 사용해야 하는 경우가 있다.
이와 같이 조상 클래스로부터 상속받은 메서드를 재정의 하여 사용하는 경우를 오버라이딩이라고한다.
오버라이딩(overriding) 조건
- 매개변수가 같아야 한다.
- 리턴타입이 같아야 한다.
오버라이딩의 조건은 위와 같습니다.
코드를 통해 예시를 살펴 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class Parent {
public void overridingTest() { System.out.println("부모 메서드의 내용");
}
}
class Child extends Parent{
@Override
public void overridingTest() {
System.out.println("상속받은 부모메서드의 내용을 수정하여 자식메서드의 내용으로 재사용");
}
}
|
cs |
위의 코드는 Child클래스가 조상클래스인 Parent클래스의 overridingTest()메서드를 상속받아 재사용 하는 코드입니다.
오버라이딩이란 메서드의 선언부는 조상의 메서드와 일치하며, 메서드의 내용만 재정의하여 사용하는 것 입니다.
오버로딩와 오버라이딩의 차이점
위에서 오버로딩과 오버라이딩에 관해 알아보았는데요.
자바에서 오버로딩과 오버라이딩의 개념이 자주 햇갈리는 개념입니다.
간단히 정리를 해보면,
오버로딩은 같은 이름의 매서드를 생성하여 사용하는 것이고, 오버라이딩은 부모로 부터 상속받은 메서드를 재정의하여 사용하는 것 입니다.
이번 피드는 여기에서 마치겠습니다.
'노빠꾸 개발일지 > JAVA' 카테고리의 다른 글
[JPA] JPA(Java Persistence API) 란? (0) | 2022.04.06 |
---|---|
[Design Pattern] 싱글턴 패턴 (0) | 2021.05.09 |
[리눅스] JAVA 설치 및 환경설정 (1) | 2020.11.22 |
[JAVA] JAVA 날짜 클래스 정리 - Date(), SimpleDateFormat(), 날짜 타입 형변환... (1) | 2020.10.21 |
[이클립스 사용 팁] 이클립스에서 메이븐 프로젝트 생성하는 방법 (2) | 2020.10.06 |