시간 복잡도는
알고리즘이 입력 크기에 대해 얼마나 빠르게 실행되는지를 분석하는 것으로, 일반적으로 시간 복잡도가 낮을수록 실행 시간이 더 빠릅니다.
공간 복잡도는
알고리즘이 실행될 때 얼마나 많은 메모리를 사용하는지를 나타내는 것으로, 일반적으로 공간 복잡도가 낮을수록 메모리 사용량이 더 적습니다.
시간 복잡도와 공간 복잡도는
알고리즘의 성능을 분석하고 개선하는 데 중요한 역할을 합니다. 시간 복잡도가 높으면 실행 시간이 오래 걸리기 때문에 대용량 데이터 처리에 적합하지 않을 수 있습니다.
또한 공간 복잡도가 높은 알고리즘은
메모리를 많이 사용하므로 시스템 자원의 한계를 초과할 가능성이 있습니다. 따라서 시간 복잡도와 공간 복잡도를 고려하여 최적의 알고리즘을 선택하고 개발하는 것이 중요합니다.
오버로딩은
같은 이름의 메서드를 여러 개 정의하고 매개변수의 타입, 개수, 순서를 다르게 해서 호출될 때 매개변수에 따라 적절한 메서드를 선택하는 것입니다. 즉, 같은 이름의 메서드가 매개변수에 따라 다른 동작을 수행하게 됩니다.
반면에 오버라이딩은
상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 이 때 하위 클래스에서 재정의한 메서드는 상위 클래스의 메서드와 이름, 매개변수, 반환값이 같아야 합니다. 이렇게 하면 상위 클래스에서 정의한 메서드와 같은 이름의 메서드를 하위 클래스에서 사용할 수 있으며, 하위 클래스에서 동작을 변경할 수 있습니다.
즉, 오버로딩은
같은 이름의 메서드를 매개변수에 따라 다르게 호출하는 것이고, 오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하여 동작을 변경하는 것입니다.