✔️ 오버라이딩 vs 오버로딩
오버라이딩(Overriding)이란?
- 상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것
- 자바의 경우 오버라이딩 시 동적 바인딩이 됨
|
오버라이딩 |
메소드 이름 |
동일 |
매개변수, 타입 |
동일 |
반환 타입 |
동일 |
public abstract class Shape {
public void printMe() {
System.out.println("Shape");
}
public abstract double computeArea();
}
public class Circle extends Shape {
private double rad = 5;
@Override
public void printMe() {
System.out.println("Circle");
}
public double computeArea() {
return rad * rad * 3.15;
}
}
오버로딩(Overloading)이란?
- 메소드의 이름은 같지만 매개변수의 타입이나 갯수가 다른 메소드를 만드는 것
- 다양한 상황에서 메소드가 호출될 수 있도록 함
- 자바의 경우 오버로딩은 다른 시그니처를 만드는 것으로, 아예 다른 함수를 만드는 것과 비슷하며
시그니처가 다르므로 정적 바인딩이 됨
|
오버로딩 |
메소드 이름 |
동일 |
매개변수, 타입 |
다름 |
반환 타입 |
상관 없음 |
public double computeArea(Circle c) {
...
}
public double computeArea(Circle c1, Circle c2) {
...
}
public double computeArea(Square c) {
...
}