Поведение интерфейса в VB.Net различно
Интерфейс ведет себя по-разному в Vb.Net. Ниже приведен пример кода, гдеIStudent
интерфейс имеет методSayHello
который реализуется классомStudent
, Модификатор доступа дляSayHello
должно бытьPublic
по умолчанию. Изменяя модификатор доступа наPrivate
не нарушает существующий код, и все же я могу получить доступ к этому приватному методу, используя приведенный ниже код
Dim stdnt As IStudent = New Student
stdnt.SayHello()
Модификатор доступа определяет область действия членов в классе, более того, частные члены доступны только из существующего класса. Но вот теория Access Modifier, Encapsulation нарушена.
Почему .net спроектировал таким образом?Неужели концепция модификатора Access и инкапсуляции действительно нарушена?Как .net framework внутренне справится с этой ситуацией?заранее спасибо
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