상속은 부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하는 것을 의미 합니다.
기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것 입니다.
다형성
하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것입니다.
즉 오버라이딩(Overriding), 오버로딩(Overloading)이 가능합니다.
📚 오버라이딩 : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는것 입니다.
classAnimal:defmake_sound(self):print("The animal makes a sound.")classDog(Animal):defmake_sound(self):print("The dog barks.")# create an instance of the Dog classmy_dog =Dog()# call the make_sound method of the Dog classmy_dog.make_sound()
📚 오버로딩 : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것 입니다.
classCalculator:defadd(self,a,b,c=0):return a + b + c# create an instance of the Calculator classmy_calculator =Calculator()# call the add method with two argumentsresult1 = my_calculator.add(2, 3)print(result1)# outputs 5# call the add method with three argumentsresult2 = my_calculator.add(2, 3, 4)print(result2)# outputs 9
그리고 파이썬에서는 오버로딩을 정식으로 지원하지 않고 구현은 가능하다는 점을 알고 있으면 되겠습니다.
오버라이딩 오버로딩 간단 요약
간단하게 요약하자면 오버라이딩은 밑의 예제 처럼 원래 있던 내용을 상속받아 쓰면서 다른 기능으로 사용할 수 있게 해주는 것이고 오버로딩은 이름은 같은 함수가 매개변수의 갯수에 따라서 다른 동작을 하는 것이라고 생각하면 되겠습니다.