다음을 통해 공유


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

업데이트: 2007년 11월

이 단원에서는 상속을 사용하여 기존 클래스를 기반으로 클래스를 만드는 방법을 배웁니다.

실제 개체는 공통된 특성과 동작을 가지는 경우가 많습니다. 예를 들어 모든 자동차는 바퀴와 엔진을 가지며 굴러가고 멈출 수 있습니다. 그러나 공통적이지 않은 특성을 가지는 자동차도 있습니다. 예를 들어 컨버터블 자동차에는 자동 또는 수동으로 접을 수 있는 착탈식 지붕이 있습니다.

자동차를 나타내는 개체를 만들 경우 공통되는 모든 특성과 동작에 대한 속성 및 메서드는 포함하지만 컨버터블 자동차의 특성과 같은 경우는 모든 자동차에 적용되는 것이 아니므로 추가하지 않을 수 있습니다.

상속을 사용하면 car 클래스에서 파생된 "convertible" 클래스를 만들 수 있습니다. 이 클래스는 car 클래스의 모든 특성을 상속하는 동시에 컨버터블 자동차에만 고유하게 적용되는 특성과 동작을 추가할 수 있습니다.

기존 클래스에서 상속

Inherits 문은 기본 클래스라는 기존 클래스를 기초로 파생 클래스라는 새 클래스를 선언하는 데 사용됩니다. 파생 클래스는 기본 클래스에 정의된 모든 속성, 메서드, 이벤트, 필드 및 상수를 상속할 수 있습니다. 다음 코드에서는 파생 클래스의 선언을 보여 줍니다.

Class DerivedClass
    Inherits BaseClass
End Class

그런 다음 새 클래스 DerivedClass를 인스턴스화할 수 있고 해당 속성과 메서드에는 BaseClass처럼 액세스할 수 있으며 새 클래스에만 해당되는 새 속성과 메서드를 추가할 수 있습니다. 예로 이전 단원에서 만든 Persons 클래스를 살펴봅시다.

야구 선수를 나타내는 클래스를 만드는 경우 야구 선수는 Persons 클래스에 정의된 모든 특성을 가지는 동시에 번호 및 포지션 같은 고유 특성도 가집니다. Persons 클래스에 해당 속성을 추가하는 대신, Persons에서 상속된 파생 클래스를 새로 만든 후 해당 클래스에 새 속성을 추가합니다.

실습

파생 클래스를 만들려면

  1. 이전 단원에서 만든 Persons 프로젝트를 엽니다. 프로젝트를 저장하지 않았으면 클래스 테스트로 돌아가 저장 절차를 완료합니다.

  2. 솔루션 탐색기에서 Persons 프로젝트 노드를 선택합니다.

  3. 프로젝트 메뉴에서 클래스 추가를 선택합니다.

  4. 새 항목 추가 대화 상자의 이름 상자에 Players를 입력하고,추가를 클릭합니다.

    새 클래스 모듈이 프로젝트에 추가됩니다.

  5. 코드 편집기에서 Public Class Players 줄 바로 아래에 다음을 추가합니다.

    Inherits Persons
    
  6. 다음 코드를 추가하여 두 개의 속성을 새로 정의합니다.

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. 파일 메뉴에서 모두 저장을 클릭합니다.

Players 클래스 테스트

Persons 클래스에서 파생된 Players 클래스를 만들었습니다. 다음 절차에서는 Players 클래스를 테스트할 새 프로그램을 만듭니다.

클래스에 대한 테스트 프로젝트를 만들려면

  1. 파일 메뉴에서 추가를 가리킨 다음 새 프로젝트를 클릭합니다.

  2. 새 프로젝트 추가 대화 상자의 템플릿 창에서 Windows 응용 프로그램을 선택합니다.

  3. 이름 상자에 PlayerTest를 입력한 다음 확인을 클릭합니다.

  4. 새 Windows Forms 프로젝트가 솔루션 탐색기에 추가되며 새 폼이 표시됩니다.

  5. 솔루션 탐색기에서 PlayerTest 프로젝트를 선택한 다음 프로젝트 메뉴에서 시작 프로젝트로 설정을 클릭합니다.

  6. 솔루션 탐색기에서 PlayerTest 프로젝트를 선택한 다음 프로젝트 메뉴에서 참조 추가를 클릭합니다.

    참조 추가 대화 상자가 열립니다.

  7. 프로젝트 탭을 클릭하고 Persons를 선택한 다음 확인을 클릭합니다.

  8. 폼을 두 번 클릭하여 코드 편집기를 연 다음 Public Class Form1 줄 바로 아래에 다음 선언을 입력합니다.

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. 이렇게 하면 Players 클래스의 두 인스턴스가 새로 선언됩니다.

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

파생 클래스를 테스트하려면

  1. 솔루션 탐색기에서 PlayerTest 프로젝트의 Form1을 선택한 다음 보기 메뉴에서 코드를 클릭합니다.

  2. 코드 편집기에서 Form1_Load 이벤트 프로시저에 다음 코드를 추가합니다.

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. 솔루션 탐색기에서 PlayerTest 프로젝트의 Form1을 선택한 다음 보기 메뉴에서 디자이너를 클릭합니다.

  4. 도구 상자에서 두 개의 Button 컨트롤을 폼으로 끌어 옵니다.

  5. 첫 번째 Button 컨트롤을 선택한 다음 속성 창에서 해당 Text 속성을 At Bat로 설정합니다.

  6. 두 번째 Button 컨트롤을 선택한 다음 속성 창에서 해당 Text 속성을 On Deck로 설정합니다.

  7. 첫 번째 단추(At Bat)를 두 번 클릭하여 코드 편집기를 연 다음 Button1_Click 이벤트 처리기에서 다음 코드를 입력합니다.

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

    기본 클래스 Persons에서 상속된 FullName 메서드가 사용됩니다.

  8. Button2_Click 이벤트 처리기에 다음 코드를 추가합니다.

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

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

다음 단계

이 단원에서는 기존 클래스에서 상속하는 방법 및 파생 클래스를 확장하는 방법을 살펴보았습니다. 자세히 보기: 멤버 재정의에서 상속에 대해 좀 더 살펴보거나 다음 단원으로 이동하여 컬렉션에 대해 알아볼 수 있습니다.

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

참고 항목

개념

상속 기본 사항