9. 객체지향 개념에서 다형성(Polymorphism)과 관련한 설명으로 틀린 것은?
① 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다.
② 다형성이란 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다.
③ 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다.
④ 메소드 오버로딩(Overloading)의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다.
객체지향 개념: 다형성(Polymorphism)과 틀린 선택지 분석
객체지향 프로그래밍(OOP, Object-Oriented Programming)에서 **다형성(Polymorphism)**은 하나의 인터페이스로 여러 타입을 처리할 수 있도록 하는 개념입니다.
이번 글에서는 다형성의 개념과 관련된 주요 개념(메소드 오버라이딩, 오버로딩)을 설명하고, 문제에서 제시된 선택지 중 틀린 항목을 분석하겠습니다.
1. 객체지향 개념에서 다형성이란?
✅ 다형성(Polymorphism)이란?
- 다형성이란 **"여러 가지 형태를 가질 수 있는 능력"**을 의미합니다.
- 같은 메소드나 인터페이스를 다른 방식으로 동작하게 할 수 있도록 구현하는 객체지향 개념입니다.
- 다형성은 코드의 확장성과 유지보수성을 높이는 중요한 개념입니다.
2. 다형성의 주요 특징
✅ (1) 메소드 오버라이딩(Method Overriding)
- 상위(부모) 클래스의 메소드를 하위(자식) 클래스에서 재정의하는 것을 의미합니다.
- **동적 바인딩(Dynamic Binding)**이 적용되며, 런타임 시점에서 객체의 타입에 따라 호출될 메소드가 결정됩니다.
- 예제 (Java)
class Animal { void sound() { System.out.println("동물이 소리를 냅니다."); } } class Dog extends Animal { @Override void sound() { System.out.println("멍멍!"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); // 다형성 적용 myAnimal.sound(); // 출력: "멍멍!" } }
- 오버라이딩 특징
- 부모 클래스의 메소드를 동일한 이름, 동일한 매개변수로 재정의해야 함.
- 접근 제한자를 부모 클래스보다 더 좁게 설정할 수 없음.
- 부모 메소드의 예외(Exception)보다 더 넓은 범위의 예외를 던질 수 없음.
✅ (2) 메소드 오버로딩(Method Overloading)
- 같은 이름의 메소드를 매개변수의 개수나 타입을 다르게 하여 여러 개 정의하는 것을 의미합니다.
- **정적 바인딩(Static Binding)**이 적용되며, 컴파일 시점에 호출될 메소드가 결정됩니다.
- 예제 (Java)
class MathUtil { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } } public class Main { public static void main(String[] args) { MathUtil math = new MathUtil(); System.out.println(math.add(5, 3)); // 8 System.out.println(math.add(5.5, 2.3)); // 7.8 } }
- 오버로딩 특징
- 메소드 이름은 동일해야 함.
- 매개변수의 개수 또는 타입이 달라야 함.
- 반환 타입(return type)은 오버로딩을 결정하는 요소가 아님.
3. 문제에서 제시된 선택지 분석
❌ 틀린 선택지: ④ 메소드 오버로딩(Overloading)의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다.
- 오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것을 의미하며, 메소드명이 다르면 오버로딩이 성립되지 않습니다.
- 오버로딩의 주요 특징은 메소드명이 동일해야 하고, 매개변수의 타입 또는 개수가 달라야 한다는 점입니다.
💡 오버로딩에서는 "메소드명을 다르게 해서 구분"하는 것이 아니라, "메소드명은 동일하지만 매개변수의 타입 또는 개수를 다르게 해서 구분"합니다.
✅ 올바른 선택지
✔ ① 다형성은 현재 코드를 변경하지 않고 새로운 클래스를 쉽게 추가할 수 있게 한다. → 정답
→ 다형성을 사용하면 기존 코드를 수정하지 않고도 새로운 클래스를 추가하여 확장할 수 있습니다.
✔ ② 다형성이란 여러 가지 형태를 가지고 있다는 의미로, 여러 형태를 받아들일 수 있는 특징을 말한다. → 정답
→ 다형성은 하나의 인터페이스나 메소드가 여러 형태를 가질 수 있는 객체지향의 핵심 개념입니다.
✔ ③ 메소드 오버라이딩(Overriding)은 상위 클래스에서 정의한 일반 메소드의 구현을 하위 클래스에서 무시하고 재정의할 수 있다. → 정답
→ 오버라이딩을 통해 부모 클래스의 메소드를 자식 클래스에서 재정의할 수 있습니다.
4. 다형성의 장점
✅ (1) 유지보수성(Manageability)
- 기존 코드를 수정하지 않고도 새로운 기능을 쉽게 추가할 수 있음.
✅ (2) 코드 재사용성(Reusability)
- 상속을 통해 중복된 코드를 줄이고, 기존 코드를 재사용할 수 있음.
✅ (3) 확장성(Extensibility)
- 다형성을 이용하면 코드를 변경하지 않고도 새로운 객체를 쉽게 추가할 수 있음.
5. 결론
객체지향 프로그래밍에서 다형성(Polymorphism)은 하나의 메소드나 인터페이스가 여러 가지 형태로 동작할 수 있도록 하는 개념입니다.
💡 문제에서 틀린 선택지는 "④ 메소드 오버로딩의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다."이며, 오버로딩에서는 반드시 메소드명이 같아야 합니다.
'기출문제 > 정보처리기사' 카테고리의 다른 글
2022년 2회 정보처리기사 기출문제 11번 (0) | 2025.02.07 |
---|---|
2022년 2회 정보처리기사 기출문제 10번 (0) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 8번 (0) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 7번 (0) | 2025.02.07 |
2022년 2회 정보처리기사 기출문제 6번 (0) | 2025.02.07 |