한 클래스 안에서 같은 메서드명을 가지지만 시그니처(인자의 개수, 타입)를 달리하여 중복으로 선언하는 것
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
}
}
상속했을 때 부모 클래스의 메서드 동작 방법을 변경(재정의)하여 우선 사용하는 것
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
}
}