캡슐화와 다형성, 객체지향 프로그래밍의 핵심 개념
캡슐화(Encapsulation)
와 다형성(Polymorphism)
역시 객체지향 프로그래밍의 핵심 개념입니다.
이번 수업에서는 캡슐화와 다형성의 개념을 소개하고, 파이썬에서 어떻게 활용하는지 알아보겠습니다.
캡슐화란?
캡슐화
는 객체의 상태를 외부에서 직접 접근하지 못하도록 보호하는 것을 뜻합니다.
객체 내부의 데이터는 외부에서 직접 접근할 수 없으며, 공개된 메서드를 통해서만 조작할 수 있습니다.
이를 통해 데이터 무결성(데이터의 정확성과 일관성)을 보장하고, 객체의 상태를 안전하게 유지합니다.
캡슐화 예시
class Car:
def __init__(self, speed):
self.__speed = speed # speed 속성을 비공개로 설정, __는 비공개 속성을 의미
def get_speed(self):
return self.__speed # 캡슐화된 속성 반환
def set_speed(self, speed):
if speed > 0:
self.__speed = speed # 캡슐화된 속성 변경
my_car = Car(50)
# 출력: 50
print(my_car.get_speed())
위 예제에서 __speed
속성은 캡슐화되어 비공개 상태이기 때문에 외부에서 직접 접근할 수 없습니다.
'__speed' 속성은 get_speed
와 set_speed
메서드를 통해서만 조작 가 능합니다.
my_car.__speed
와 같이 속성에 직접 접근하면 오류가 발생하므로, 데이터의 무결성을 보장할 수 있습니다.
다형성이란?
다형성
은 동일한 메서드가 여러 객체에서 다르게 동작할 수 있는 것을 뜻합니다.
이를 통해 코드의 유연성과 확장성이 크게 향상됩니다.
부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하는 메서드 오버라이딩
은 다형성의 대표적인 예시입니다.
다형성 예시
class Animal:
def speak(self):
return "소리를 낸다"
class Dog(Animal):
def speak(self):
return "멍멍"
class Cat(Animal):
def speak(self):
return "야옹"
animals = [Dog(), Cat()]
for animal in animals:
# Dog 클래스와 Cat 클래스에서 오버라이딩한 speak 메서드 호출
print(animal.speak())
# 출력: 다른 줄에 '멍멍'과 '야옹'이 출력됨
위 예제에서 Animal 클래스에 정의된 speak
메서드는 Dog
와 Cat
클래스에서 각각 다르게 동작합니다.
이는 다형성을 통해 같은 메서드 호출이 객체에 따라 다른 결과를 반환할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!