객체 지향 C#

C#의 다형성

이 레슨에서는 다형성을 이용해 공통 타입을 통해 여러 도형에 같은 메서드를 호출합니다.

소개

다형성(polymorphism)을 쓰면 각 타입을 if로 확인하지 않고도 공통 타입을 통해 여러 종류의 객체를 다룰 수 있습니다. 메서드를 어떻게 실행할지는 각 객체 타입이 스스로 정합니다.

추상 클래스 Shape는 Area() 메서드를 구현 없이 선언하고, Circle과 Square는 각각 override로 자기만의 넓이 계산을 구현합니다. 반복문의 변수 shape는 공통 타입 Shape이지만, 프로그램은 실행할 때 각 객체의 올바른 버전을 호출해 12.57과 9.00을 얻습니다.

실행 가능한 C# 예제

C#
코드 실행 →
Program.cs
using System;

abstract class Shape { public abstract double Area(); }
class Circle(double radius) : Shape { public override double Area() => Math.PI * radius * radius; }
class Square(double side) : Shape { public override double Area() => side * side; }

class Program
{
    static void Main()
    {
        Shape[] shapes = { new Circle(2), new Square(3) };
        foreach (Shape shape in shapes) Console.WriteLine($"{shape.Area():F2}");
    }
}
실행 결과
12.57
9.00

디버거로 연습하기

중요한 대입이나 조건에 중단점을 두고 Debug를 눌러 다음 줄로 넘어가기 전에 지역 변수 값을 확인하세요.

챌린지로 연습하기

이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.

모든 챌린지