Overloading vs Overriding

정미·2022년 7월 24일
0

Computer Science

목록 보기
38/81

Overloading

한 클래스 안에서 같은 메서드명을 가지지만 시그니처(인자의 개수, 타입)를 달리하여 중복으로 선언하는 것

특징

  1. 메서드 이름이 같아야 한다.
  2. 반환형이 달라도 된다.
    • 반환형은 시그니처에 포함되지 않는다.
  3. 인자의 개수가 달라야 한다.
  4. 인자의 개수가 같을 경우 타입이 달라야 한다.

예시

public class Camera {
	public boolean takePhoto(int count) {
		System.out.println("Camera::takePhoto with 1 parameter");
	}

	public void takePhoto(int count, double ratio) {
		System.out.println("Camera::takePhoto with 2 parameter");
	}
}
public class Application {
	public static void main(String[] args) {
		Camera camera = new Camera();
		camera.takePhoto(2);  // Camera::takePhoto with 1 parameter
		camera.takePhoto(2, 0.75);  // Camera::takePhoto with 2 parameter
	}
}

Overriding

상속했을 때 부모 클래스의 메서드 동작 방법을 변경(재정의)하여 우선 사용하는 것

public class Camera {
	public void takePhoto() {
		System.out.println("Camera::takePhoto");
	}
}
public class KodakCamera extends Camera {
	@Override
	public void takePhoto() {
		System.out.println("KodakCamera::takePhoto");
	}
}
public class Application {
	public static void main(String[] args) {
		Camera kodakCamera = new KodakCamera();
		kodakCamera.takePhoto();  // KodakCamera::takePhoto

		Camera camera = new Camera();
		camera.takePhoto();  // Camera::takePhoto
	}
}

출처

0개의 댓글