2013-10-05 4 views
0

Если есть проблемы, чтобы понять вторую строку следующего кода:Уровень начального уровня: что, если ObjectVariable ссылка на экземпляр?

Dim locSecondClass As New SecondClass 
Dim locFirstClass As FirstClass = locSecondClass 

Public Class FirstClass 
    Public Overridable Function aFunktion() As String 
     Return "First Class" 
    End Function 
End Class 

Public Class SecondClass 
    Inherits FirstClass 
    Public Overrides Function aFunktion() As String 
     Return "Second Class" 
    End Function 
End Class 

Что в locFirstClass? Если его тип FirstClass, но locSecondClass скопирован в него? Is Inherits First Class также скопировано в locFirstClass? Что произойдет, если класс SecondClass будет иметь функцию/метод, который не существует в FirstClass?

ответ

0

Не используется копирование, вместо этого locFirstClass ссылается на тот же экземпляр, что и locSecondClass. Однако locFirstCLass только знает, что он ссылается на FirstClass, поэтому может только вызывать методы, присутствующие в FirstClass.

Однако, как aFunktion объявлен Overridable Программа ditermines во время выполнения, что фактический тип является объекта и вызывает метод в этом случае возвращение "Second Class"

0

FirstClass - базовый класс SecondClass. Это никогда не будет, если что-то доступно в FirstClass (которое не является частным), не доступно в SecondClass.

Смежные вопросы