# 클래스 상속?
- 한 클래스가 다른 클래스로 부터 데이터 속성과 메소드를 물려받는 것
- 상속하는 클래스 = 기반클래스 / 상위클래스 / 부모클래스 / 상속클래스
- 상속받는 클래스 = 파생클래스 / 하위클래스 / 자식클래스
- 사용법 : class 클래스이름(상속하는 클래스 이름):
class A:
def 함수1(self, 변수1, 변수2):
return 결과
class B(A): #클래스A로 부터 함수1을 상속 받음(클래스 B에서는 함수1을 따로 정의하지 않아도 됨)
def 함수2(self, 변수1, 변수2):
return 결과
- 결국 class B(A)는 ==> class B: 와 같다. def 함수1(self, 변수1, 변수2): return 결과 def 함수2(self, 변수1, 변수2): return 결과
- 예시
덧셋계산기와 뺄셈기능이 추가된 계산기
class cal1:
def addtion(self, x, y):
return x+y
class cal2(cal1):
def substraction(self, x, y):
return x-y
test1 = cal1() #cal1객체 생성
test1.addtion(2,3)
#5
test2 = cal2() #cal2객체 생성
test2.substraction(5,2)
#3
test2.addition(5,2) #cal1에 정의된 addition 메소드 사용
#7
상속받은 자식클래스에서 부모클래스의 메소드를 호출하고 싶으면??
# super()
- 부모클래스에 정의된 변수와 메소드를 불러올 수 있음.
class cal1:
def addtion(self, x, y):
print(x+y)
class cal2(cal1):
def addition2(self, x, y):
super().addition(x,y) #print(x+y)
- 부모메소드를 불러와서, super().addition(x,y) == print(x+y) 와 같음
만약 부모클래스에 정의되어있는 메소드와 같은 이름의 메소드가 자식에게 정의된다면?
# overriding
- 부모클래스의 메소드는 무시되고 새로 정의된 자식클래스의 메소드를 사용하게 됨
class A:
def method(self, x, y):
result1
class B(A):
def method(self, x, y):
result2 #method메소드는 result1이 아닌 result2를 반환함
상속을 여러개 클래스에서 받을 수 있을까?
# 다중 상속
- ,를 통해서 여러개 상속 가능함
class A:
def 함수1(self, var1, var2):
return result1
class B:
def 함수2(self, var1, var2):
return result2
class C(A,B): #class A와 class B로 부터 상속을 받음
pass
- 만약 다중상속에서 overriding 발생하면? classA와 B에서 같은 함수를 상속받으면 먼저 입력한 A의 함수를 상속받음
'Python > Programming basic' 카테고리의 다른 글
상속과 예외처리_03.예외처리 (0) | 2022.06.30 |
---|---|
상속과 예외처리_02.추상클래스와 isinstance (0) | 2022.06.30 |
클래스_04.특수메소드 (0) | 2022.06.27 |
클래스_03.객체지향과 절차지향 (0) | 2022.06.27 |
클래스_02.객체와 클래스 (0) | 2022.06.27 |