오버로딩과 오버라이딩의 공통점은 인스턴스 멤버인 메소드를 재정의 또는 확장하는 개념이다
간단하게 차이점을 말하자면, 오버로딩 (overloading)은 하나의 클래스 내부에서 확장하는 개념이고,
오버라이딩 (overring)은 부모 클래스의 상속을 받은 자식 클래스에서 확장하는 개념이다.
오버로딩 (overloading)
- 오버로딩은 같은 클래스 내부에서 메소드를 확장하기 위한 개념
- 오버로딩 충족 조건
- 메소드의 이름이 일치해야 한다
- 메소드 매개변수의 개수 또는 타입이 달라야 한다
(매개변수의 개수가 같다면 타입이, 타입이 같다면 개수가 달라야 함) - 메소드의 return 타입이 달라야 한다
예제 - Car 클래스에 modelNum을 대입하여 저장
class Car {
int modelNum;
public int setModel(int ModelNum) {
this.modelNum = modelNum;
return this.modelNum;
}
}
public class CarOverloadingTest {
public static void main(String[] args) {
Car car = new Car();
car.setModel(1234)
}
}
main 메소드에서 인스턴스 메소드의 setModel()을 호출하면 인자로 넣은 1234 가 Car클래스 필드의 modelNum에 저장
예제 2 - Car 클래스에 modelNum과 modelName을 추가로 받아 String 타입으로 저장
class Car {
int modelNum;
String model;
public int setModel(int modelNum) {
this.modelNum = modelNum;
return this.modelNum;
}
public String setModel(int modelNum, String brand) {
this.model = modelName + modelNum;
return this.model;
}
}
public class CarOverloadingTest {
public static void main(String[] args) {
Car car = new Car();
car.setModel(1234);
car.setModel(5678, "Genesis");
}
}
setModel() 메소드를 호출하여 모델넘버(5678)과 모델이름(Genesis)를 인자로 넣어주면 오버로딩 된 메소드가 호출되어 각각의 매개변수로 들어가 필드의 model로 저장된다.
오버라이딩 (overriding)
- 자식 클래스에서 물려받은 메소드를 변경하여 사용할 때 사용
- 자유롭게 기능을 추가하거나 재정의 할 수 있음
- 오버라이딩 충족 조건
- 메소드 매개변수의 개수, 순서, 데이터 타입이 일치해야 한다
- 메소드의 return 타입이 일치해야 한다.
public class Parent {
public void overridingTest() {
System.out.println("부모 메서드 내용");
}
}
class Child entends Parent {
@Override
public void overridingTest() {
System.out.println("상속받은 부모 메서드의 내용을 자식메서드만의 내용으로 수정하여 재정의")
}
}
Child 클래스가 부모 클래스인 Parent 클래스의 overridingTest() 메소드를 상속받아서 재사용.
즉, 오버라이딩은 메소드의 선언부는 조상 메소드와 일치하고, 메소드 내용마나 재정의하여 사용하는 것!
728x90
'ssung_항해일지 > CS 지식 및 기술면접' 카테고리의 다른 글
Exception(예외) 처리 (1) | 2023.05.19 |
---|---|
RDB & NoSQL (0) | 2023.05.18 |
절차지향, 객체지향, 함수형 프로그래밍 (0) | 2023.05.17 |
Stack & Queue / Array & LinkedList (0) | 2023.05.16 |
Web Server 와 WAS (0) | 2023.05.16 |