# 클래스 상속?

- 한 클래스가 다른 클래스로 부터 데이터 속성과 메소드를 물려받는 것

- 상속하는 클래스 = 기반클래스 / 상위클래스 / 부모클래스 / 상속클래스

- 상속받는 클래스 = 파생클래스 / 하위클래스 / 자식클래스

- 사용법 : 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의 함수를 상속받음

+ Recent posts