다음을 통해 공유


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

인터페이스는 속성, 메서드 및 이벤트의 특징을 설명하지만 구현에 대한 세부적인 사항은 구조체나 클래스에서 처리합니다.

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

[!참고]

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

[!참고]

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

인터페이스를 정의하려면

  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 문 사이에 다음 문을 추가한 다음 Enter 키를 눌러 이름이 ImplementationClass인 클래스를 Module1에 추가합니다.

    Class ImplementationClass
    

    통합 개발 환경에서 작업하는 경우, Enter 키를 누르면 코드 편집기에서 짝이 되는 End Class 문이 삽입됩니다.

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

    Implements TestInterface
    

    Implements 문이 클래스나 구조체의 맨 위에 다른 항목들과 별도로 나열되면 해당 클래스나 구조체가 인터페이스를 구현한다는 것을 뜻합니다.

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

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

    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
    

    property get 접근자로부터 pval의 값을 반환합니다.

    Return pval
    

    property set 접근자에서 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
    

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

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

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

    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 was set to 9"이 표시됩니다.확인을 클릭하면 메시지 "The X parameter for Method1 is 5"가 표시되고,다시 확인을 클릭하면 "The event handler caught the event" 메시지가 표시됩니다.

참고 항목

참조

Implements 문

Interface 문(Visual Basic)

Event 문

기타 리소스

인터페이스(Visual Basic)