Abstract Classes
Abstract Classes 추상 클래스는 하나 이상의 추상 메서드를 포함하는 클래스이다. 추상 메서드는 선언만 되고 구현되지 않은 메서드를 말한다. 이는 기본적인 구조는 정의하지만 세부적인 구현은 하위 클래스에 맡긴다. 기본 구조: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def calculate_area(self): """도형의 넓이를 계산하는 추상 메서드""" pass @abstractmethod def calculate_perimeter(self): """도형의 둘레를 계산하는 추상 메서드""" pass def get_description(self): """일반 메서드 - 모든 하위 클래스가 공유""" return "이것은 2차원 도형입니다." 주요 특징 인스턴스화 불가: 추상 클래스는 직접 객체를 생성할 수 없다. 상속 목적: 다른 클래스들의 기본 클래스 역할을 한다. 추상 및 구체 메서드 포함: 추상 메서드와 구현된 메서드를 모두 가질 수 있다. 공통 인터페이스 제공: 관련된 클래스들에 대한 공통 인터페이스나 동작을 정의한다. 추상 클래스의 구현과 활용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class Circle(Shape): def __init__(self, radius): self.radius = radius def calculate_area(self): """원의 넓이 계산 구현""" return 3.14 * self.radius * self.radius def calculate_perimeter(self): """원의 둘레 계산 구현""" return 2 * 3.14 * self.radius class Rectangle(Shape): def __init__(self, width, height): self.width = width self.height = height def calculate_area(self): """직사각형의 넓이 계산 구현""" return self.width * self.height def calculate_perimeter(self): """직사각형의 둘레 계산 구현""" return 2 * (self.width + self.height) 사용 목적 계층 구조 생성: 관련 클래스들의 공통 속성과 메서드를 정의한다. 템플릿 메서드 패턴: 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스에서 구현하도록 한다. 프레임워크 개발: API나 프레임워크에서 기본 구조를 정의하는 데 사용된다. 예시 Java에서 추상 클래스 선언 예: 이 예시에서 Shape는 추상 클래스로, draw() 메서드는 추상 메서드이며 setColor() 메서드는 구체적인 구현을 가진다. ...