기출문제/정보처리기사

2022년 2회 정보처리기사 기출문제 9번

엉클지니 2025. 2. 7. 08:55

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)은 하나의 메소드나 인터페이스가 여러 가지 형태로 동작할 수 있도록 하는 개념입니다.
💡 문제에서 틀린 선택지는 "④ 메소드 오버로딩의 경우 매개 변수 타입은 동일하지만 메소드명을 다르게 함으로써 구현, 구분할 수 있다."이며, 오버로딩에서는 반드시 메소드명이 같아야 합니다.

반응형