코드 7-1은 기본 클래스인 Computer 클래스를 보여 줍니다. 인스턴스 멤버는 CPU와 RAM이고, 인스턴스 메서드는 웹 서핑을 하는 browse()와 일을 하는 work()입니다. 노트북은 컴퓨터의 모든 멤버와 메서드를 가집니다. 노트북에도 CPU와 RAM이 있으며 노트북으로도 웹 서핑을 하거나 일을 할 수 있습니다. 이렇게 어떤 객체가 다른 객체의 모든 특성(멤버)과 기능(메서드)을 가진 상태에서 그 외에 다른 특성이나 기능을 가지고 있다면 상속이 가장 어울립니다.
노트북은 컴퓨터가 갖고 있지 않은 배터리가 있고 컴퓨터와 달리 휴대성이 좋습니다. 이러한 노트북의 특징을 반영하여 Laptop 클래스를 설계해 봅시다.
코드 7-2 oop2/oop2_1/is_a.py ②
class Laptop(Computer): #1 # 멤버 추가 def _ _init__(self, cpu, ram, battery): super().__init__(cpu, ram) #2 self.battery = battery #3 # 메서드 추가 def move(self, to): #4 print('move to {}'.format(to))
코드 7-2는 파생 클래스인 Laptop 클래스로 Laptop 이름 옆 괄호 안에 Computer가 들어 있습니다(#1). 이는 Laptop 클래스가 Computer 클래스를 상속한다는 의미입니다. 이렇게 하면 Laptop 클래스는 Computer 클래스가 갖고 있는 모든 멤버와 메서드를 가집니다. 즉, browse() 메서드나 work() 메서드를 정의하지 않아도 이미 가지고 있다는 의미입니다. 상속을 하면 코드를 재활용할 수 있어 매우 편리합니다.