연습: 인터페이스 만들기 및 구현(Visual Basic)

인터페이스는 속성, 메서드, 이벤트의 특성을 설명하지만 구현 세부 사항은 구조체 또는 클래스에 맡깁니다.

이 연습에서는 인터페이스를 선언하고 구현하는 방법을 보여 줍니다.

참고 항목

이 연습에서는 사용자 인터페이스를 만드는 방법에 대한 정보는 제공하지 않습니다.

참고 항목

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

인터페이스를 정의하려면 다음을 수행합니다.

  1. 새 Visual Basic Windows 애플리케이션 프로젝트를 엽니다.

  2. 프로젝트 메뉴에서 모듈 추가를 클릭하여 프로젝트에 새 모듈을 추가합니다.

  3. 새 모듈의 이름을 Module1.vb로 지정하고 추가를 클릭합니다. 새 모듈의 코드가 표시됩니다.

  4. Module 문과 End Module 문 사이에 Interface TestInterface을 입력한 다음 Enter 키를 눌러 Module1 내에서 TestInterface라는 인터페이스를 정의합니다. 코드 편집기Interface 키워드를 들여쓰고 End Interface 문을 추가하여 코드 블록을 형성합니다.

  5. Interface 문과 End Interface 문 사이에 다음 코드를 배치하여 인터페이스의 속성, 메서드, 이벤트를 정의합니다.

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

구현

인터페이스 멤버를 선언하는 데 사용되는 구문은 클래스 멤버를 선언하는 데 사용되는 구문과 다르다는 점을 알 수 있습니다. 이러한 차이점은 인터페이스가 구현 코드를 포함할 수 없다는 사실을 반영합니다.

인터페이스를 구현하려면 다음을 수행합니다.

  1. End Interface 문 뒤, End Module 문 앞에 다음 문을 Module1에 추가하고 Enter 키를 눌러 ImplementationClass라는 클래스를 추가합니다.

    Class ImplementationClass
    

    통합 개발 환경 내에서 작업하는 경우 코드 편집기는 Enter 키를 누르면 일치하는 End Class 문을 제공합니다.

  2. 클래스가 구현하는 인터페이스의 이름을 지정하는 다음 Implements 문을 ImplementationClass에 추가합니다.

    Implements TestInterface
    

    클래스 또는 구조체 맨 위에 다른 항목과 별도로 나열된 경우 Implements 문은 해당 클래스 또는 구조체가 인터페이스를 구현한다는 것을 나타냅니다.

    통합 개발 환경 내에서 작업하는 경우 Enter 키를 누르면 코드 편집기TestInterface에 필요한 클래스 멤버를 구현하며 다음 단계를 건너뛸 수 있습니다.

  3. 통합 개발 환경 내에서 작업하지 않는 경우 인터페이스 MyInterface의 모든 멤버를 구현해야 합니다. Event1, Method1, Prop1을 구현하려면 ImplementationClass에 다음 코드를 추가합니다.

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    Implements 문은 구현되는 인터페이스 및 인터페이스 멤버의 이름을 지정합니다.

  4. 속성 값을 저장한 클래스에 프라이빗 필드를 추가하여 Prop1의 정의를 완료합니다.

    ' Holds the value of the property.
    Private pval As Integer
    

    get 접근자 속성에서 pval 값을 반환합니다.

    Return pval
    

    속성 집합 접근자에서 pval 값을 설정합니다.

    pval = value
    
  5. 다음 코드를 추가하여 Method1의 정의를 완성합니다.

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

인터페이스의 구현을 테스트하려면 다음을 수행합니다.

  1. 솔루션 탐색기에서 프로젝트의 시작 양식을 마우스 오른쪽 단추로 클릭하고 코드 보기를 클릭합니다. 편집기에는 시작 양식의 클래스가 표시됩니다. 기본적으로 시작 양식은 Form1이라고 합니다.

  2. Form1 클래스에 다음 testInstance 필드를 추가합니다.

    Dim WithEvents testInstance As TestInterface
    

    testInstanceWithEvents로 선언하면 Form1 클래스가 해당 이벤트를 처리할 수 있습니다.

  3. Form1 클래스에 다음 이벤트 처리기를 추가하여 testInstance에서 발생하는 이벤트를 처리합니다.

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. 구현 클래스를 테스트하려면 Form1 클래스에 Test라는 하위 루틴을 추가합니다.

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    Test 프로시저는 MyInterface를 구현하는 클래스의 인스턴스를 만들고, 해당 인스턴스를 testInstance 필드에 할당하고, 속성을 설정하고, 인터페이스를 통해 메서드를 실행합니다.

  5. 시작 양식의 Form1 Load 프로시저에서 Test 프로시저를 호출하는 코드를 추가합니다.

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. F5를 눌러 Test 프로시저를 실행합니다. “Prop1이 9로 설정되었습니다.”라는 메시지가 표시됩니다. 확인을 클릭하면 “Method1의 X 매개 변수는 5입니다.”라는 메시지가 표시됩니다. 확인을 클릭하면 “이벤트 처리기가 이벤트를 포착했습니다.”라는 메시지가 표시됩니다.

참고 항목