Полиморфизм в VB.NET - PullRequest
       0

Полиморфизм в VB.NET

1 голос
/ 16 сентября 2011

В VB.NET, скажем, у меня есть функция

Public Function Foo(ByVal currentShape as Shape)

Вместо того, чтобы передать объект Shape, я передаю в подкласс Shape, называемый Square, например:

Dim square As Square = new Square()
Foo(square)

Нужно ли преобразовывать мой Square объект в Shape объект перед передачей его внутрь? Если да, то как мне это сделать?

Ответы [ 3 ]

6 голосов
/ 16 сентября 2011

Square is-a Shape.
Вам не нужно ничего преобразовывать.

Все подклассы неявно преобразуются в свои суперклассы.

2 голосов
/ 16 сентября 2011

Нет, вам не нужно выполнять преобразование самостоятельно.Значение square можно преобразовать, используя преобразование ссылки в значение типа Shape (оно все еще является ссылкой).Это не создает новый объект - он просто смотрит на объект по-другому :) Foo будет иметь доступ только к членам объявленным в Shape, хотя ониможет быть переопределено в Square.

Любые изменения, внесенные в объект в Foo, все равно будут видны через square, когда метод вернется.

0 голосов
/ 16 сентября 2011

Я почти уверен, что вы можете передать объект Square прямо внутрь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...