Zachowanie interfejsu jest inne w VB.Net

Interfejs zachowuje się inaczej w Vb.Net. Poniżej znajduje się przykładowy fragment koduIStudent interfejs ma metodęSayHello który jest implementowany przez klasęStudent. Modyfikator Access dlaSayHello powinno byćPublic domyślnie. Zmieniając modyfikator Access naPrivate nie łamie istniejącego kodu i nadal mogę uzyskać dostęp do tej prywatnej metody przy użyciu poniższego kodu

Dim stdnt As IStudent = New Student
stdnt.SayHello()

Modyfikator dostępu określa zakres elementów w klasie, więcej niż członków prywatnych jest dostępnych tylko z klasy, która istnieje. Ale tutaj teoria modyfikatora dostępu, enkapsulacja, jest zepsuta.

Dlaczego .net zaprojektował w ten sposób?Czy koncepcja modyfikatora Access i enkapsulacji jest naprawdę zepsuta?Jak struktura .net wewnętrznie radzi sobie z tą sytuacją?

Z góry dziękuję

Module Module1

   Sub Main()
        Dim stdnt As IStudent = New Student
        stdnt.Name = "vimal"
        stdnt.SayHello()
   End Sub

End Module

Public Interface IStudent

   Property Name As String

   Sub SayHello()

End Interface

Public Class Student
   Implements IStudent

   Private Property Name As String Implements IStudent.Name

   Private Sub SayHello() Implements IStudent.SayHello
       Console.WriteLine("Say Hello!")
   End Sub

End Class

questionAnswers(5)

yourAnswerToTheQuestion