메서드 오버라이딩
• bamjun
메서드 오버라이딩에 대한 설명으로 올바른 것은 “메서드 오버라이딩은 어떤 기능이 같은 이름으로 사용되어야 할 때 활용된다.” 입니다.
메서드 오버라이딩(Overriding)은 서브 클래스(자식 클래스)에서 슈퍼 클래스(부모 클래스)에 정의된 메서드를 재정의하는 것을 말합니다. 오버라이딩을 통해 서브 클래스는 상속받은 메서드와 동일한 이름을 가진 메서드를 새로 구현하여, 부모 클래스의 메서드 대신 자신의 버전을 사용하게 됩니다. 이를 통해 기존 메서드의 기능을 확장하거나 변경할 수 있습니다.
다른 옵션들은 메서드 오버라이딩에 대한 올바른 설명이 아닙니다:
- 메서드 오버라이딩은 기존 함수 이름을 유지해야 합니다. 이름을 다르게 만드는 것은 오버로딩이나 다른 함수 정의에 해당합니다.
- 기반 클래스의 메서드를 무시하는 것이 아니라, 같은 이름의 메서드를 재정의합니다.
- 오버라이딩된 메서드에서는 기반 클래스의 메서드를 명시적으로 호출할 수 있습니다.
- 메서드 오버라이딩은 기존 기능을 유지하기 보다는 새로운 기능을 제공하거나 기존 기능을 변경합니다.
메서드 오버라이딩의 예제를 들어보겠습니다. 여기서는 Person
클래스를 정의하고, Student
클래스에서 Person
클래스의 메서드를 오버라이딩하는 예제를 보여드리겠습니다.
먼저, Person
클래스에 greeting
메서드를 정의합니다. 그 다음, Student
클래스를 Person
클래스의 하위 클래스로 정의하고, greeting
메서드를 오버라이딩하여 다른 메시지를 출력하도록 합니다.
class Person:
def greeting(self):
print("Hello from Person")
class Student(Person):
def greeting(self):
print("Hello from Student")
# Person 인스턴스 생성 및 greeting 메서드 호출
person = Person()
person.greeting() # "Hello from Person" 출력
# Student 인스턴스 생성 및 greeting 메서드 호출
student = Student()
student.greeting() # "Hello from Student" 출력
이 예제에서 Student
클래스는 Person
클래스의 greeting
메서드를 오버라이딩합니다. Person
의 인스턴스에서 greeting
을 호출하면 “Hello from Person”이 출력되고, Student
의 인스턴스에서 greeting
을 호출하면 오버라이딩된 메서드가 실행되어 “Hello from Student”가 출력됩니다. 이렇게 서브 클래스는 슈퍼 클래스의 동일한 메서드를 재정의하여 사용할 수 있습니다.