5. 객체지향 프로그래밍 (오버로딩, 오버라이딩)
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체들의 집합으로 모델링하고, 객체들 간의 상호작용을 중심으로 프로그래밍하는 개발 방법론입니다. Java는 객체지향 프로그래밍 언어로서, OOP의 개념을 지원하고 있습니다.
오버로딩(Overloading)과 오버라이딩(Overriding)은 객체지향 프로그래밍에서 중요한 개념입니다. 둘 다 다형성(Polymorphism)을 구현하기 위한 메커니즘입니다. 각각의 개념을 예시와 함께 설명해보겠습니다.
1. 오버로딩 (Overloading)
오버로딩은 같은 이름의 메서드를 여러 개 정의하고, 매개변수의 유형, 개수, 순서를 다르게하여 다양한 매개변수 조합을 처리할 수 있도록 하는 것입니다.
메서드 오버로딩은 메서드 이름이 동일하지만, 매개변수의 시그니처(매개변수의 유형, 개수, 순서)가 다른 여러 개의 메서드를 정의하는 것을 말합니다.
예시:
위의 코드는 Calculator 클래스를 정의하고, add 메서드를 오버로딩하여 다양한 매개변수 조합을 처리할 수 있도록 구현한 예시입니다.
add(int a, int b)
메서드:두 개의 정수형 매개변수 a와 b를 받아서 덧셈 연산을 수행하고 결과를 반환합니다.
예를 들어,
calculator.add(5, 10)
은 매개변수로 5와 10을 전달하여 덧셈 연산을 수행하고 결과인 15를 반환합니다.
add(double a, double b)
메서드:두 개의 실수형 매개변수 a와 b를 받아서 덧셈 연산을 수행하고 결과를 반환합니다.
예를 들어,
calculator.add(3.14, 2.7)
은 매개변수로 3.14와 2.7을 전달하여 덧셈 연산을 수행하고 결과인 5.84를 반환합니다.
add(int a, int b, int c)
메서드:세 개의 정수형 매개변수 a, b, c를 받아서 덧셈 연산을 수행하고 결과를 반환합니다.
예를 들어,
calculator.add(1, 2, 3)
은 매개변수로 1, 2, 3을 전달하여 덧셈 연산을 수행하고 결과인 6을 반환합니다.
2. 오버라이딩 (Overriding)
오버라이딩은 상위 클래스에서 이미 정의된 메서드를 하위 클래스에서 재정의하는 것입니다. 즉, 상속 관계에 있는 클래스 간에 같은 이름의 메서드를 다시 구현하는 것입니다.
하위 클래스에서 오버라이딩된 메서드는 상위 클래스의 동일한 이름, 반환 유형, 매개변수를 가져야 합니다.
예시:
위의 예시에서 Cat 클래스는 Animal 클래스를 상속받고, makeSound() 메서드를 오버라이딩하여 재정의했습니다. Cat 클래스의 makeSound() 메서드는 Animal 클래스의 동일한 이름의 메서드를 대체하고, "야옹~"이라는 다른 동작을 수행합니다.
오버로딩과 오버라이딩은 객체지향 프로그래밍의 다형성을 구현하기 위해 사용됩니다. 오버로딩은 메서드 호출 시 다양한 매개변수 조합을 지원하여 편의성을 높이고, 오버라이딩은 상속 관계에서 하위 클래스에서 상위 클래스의 메서드를 재정의하여 다른 동작을 수행할 수 있습니다.
Last updated