다음을 통해 공유


자세히 보기: 멤버 재정의

업데이트: 2007년 11월

이 단원에서는 파생 클래스의 멤버를 재정의하는 방법을 배웁니다.

이전 단원에서는 기본 클래스에서 상속하고 새로운 속성을 사용하여 파생 클래스를 확장하는 방법을 배웠습니다. 파생 클래스에 새로운 속성이나 메서드를 추가하는 것 외에도 기존 속성이나 메서드의 동작을 변경, 즉 재정의할 수 있습니다.

예를 들어, StartEngine 메서드가 있는 Car 클래스에서 파생되는 Truck 클래스를 만들 수 있습니다. 트럭에 디젤 엔진이 장착되어 있으면 엔진의 시동 절차가 다를 수 있습니다. 이 경우 트럭에 적합하도록 StartEngine 메서드를 재정의할 수 있습니다.

속성 및 메서드 재정의

기본적으로 클래스의 속성과 메서드는 재정의할 수 없습니다. 파생 클래스에서 속성 또는 메서드를 재정의하려면 이 클래스를 Overridable 키워드를 통해 선언하여 재정의 가능으로 표시해야 합니다.

Public Overridable Property EngineType As String

Public Overridable Sub StartEngine(ByVal EngineType As String)

기본 클래스에서 상속하는 경우 Overridable로 표시된 속성과 메서드는 그대로 사용하거나 Overrides 키워드를 통해 선언하여 필요에 따라 수정할 수 있습니다.

Public Overrides Property EngineType As String

Public Overrides Sub StartEngine(ByVal EngineType As String)

이전 단원에서 만든 Players 클래스에서 FullName 메서드를 재정의하여 선수의 번호를 포함하고 중간 이름을 반환하는 코드를 제거할 수도 있습니다.

실습

FullName 메서드를 재정의하려면

  1. 이전 단원에서 만든 Persons 프로젝트를 엽니다. 프로젝트를 저장하지 않았으면 이전 단원 기존 클래스를 기반으로 클래스 만들기: 상속 사용으로 돌아가 저장 절차를 완료합니다.

  2. 솔루션 탐색기에서 Persons.vb 노드를 선택한 다음 보기 메뉴에서 코드를 선택합니다.

  3. 코드 편집기에서 FullName 메서드에 대한 선언을 다음과 같이 수정합니다.

    Public Overridable Function FullName() As String
    
  4. 솔루션 탐색기에서 Players.vb 노드를 선택한 다음 보기 메뉴에서 코드를 선택합니다.

  5. 코드 편집기에서 다음 코드를 클래스에 추가합니다.

    Public Overrides Function FullName() As String
        FullName = FirstName & " " & LastName & ", #" & numberValue
    End Function
    
  6. 솔루션 탐색기에서 PlayerTest 프로젝트의 Form1.vb 노드를 선택한 다음 보기 메뉴에서 코드를 선택합니다.

  7. 코드 편집기에서 Button1_Click 이벤트 코드를 다음과 같이 수정합니다.

    MsgBox(player1.Position & " " & player1.FullName & _
          " is now at bat.")
    
  8. Button2_Click 이벤트 코드를 다음과 같이 수정합니다.

    MsgBox(player2.Position & " " & player2.FullName & _
          " is on deck.")
    
  9. F5 키를 눌러 프로그램을 실행하고 각 단추를 클릭하여 결과를 표시합니다.

    이와 같이 재정의한 FullName 메서드를 사용해도 결과는 이전과 같습니다.

  10. 파일 메뉴에서 모두 저장을 선택합니다.

다음 단계

이 단원에서는 메서드를 재정의하는 방법을 배웠습니다. 다음 단원에서는 컬렉션을 사용하여 유사한 개체 그룹을 관리하는 방법을 배웁니다.

다음 단원: 컬렉션을 사용하여 여러 개체 관리

참고 항목

작업

기존 클래스를 기반으로 클래스 만들기: 상속 사용

참조

Overridable

Overrides