MustInherit и общие функции - PullRequest
       31

MustInherit и общие функции

1 голос
/ 06 июня 2009

Я смотрю на класс VB.NET (который я не писал), который объявлен MustInherit (abstract в C #, я считаю), который имеет три метода, каждый из которых определен как Shared (static в C #). В классе нет свойств или полей - только три метода. С точки зрения ОО это имеет какой-то смысл?

Я думаю, что нет, потому что, делая его MustInherit, вы, по сути, говорите, что не можете создать экземпляр этого класса - вы должны наследовать его и создать экземпляр производного учебный класс. Но так как все методы являются общими, вы все равно никогда не создадите экземпляр родительского класса, поэтому MustInherit ничего не даст. Вы также можете не пометить его MustInherit и просто наследовать от него, когда захотите.

Есть ли ситуация, когда создание класса таким способом имеет смысл?

Ответы [ 3 ]

2 голосов
/ 06 июня 2009

Как уже говорили другие, похоже, что им действительно нужен статический класс C #. В VB эквивалент «static» - «shared», но вы не можете пометить классы «shared» в VB. Разница в том, что кто-то может наследовать от этого класса, а затем создать экземпляр. C # статические классы запечатаны.

То, что они должны сделать, это использовать Module. Статический класс VB Module и C # практически идентичны: члены связаны с типом, а не с экземпляром, и вы не можете наследовать от них.

0 голосов
/ 06 июня 2009

В C # класс может быть объявлен как static (= Shared), и я думаю, что VB.NET этого не допускает, поэтому в качестве обходного пути он помечается как абстрактный (MustInherit), так что он никогда не создается

0 голосов
/ 06 июня 2009

С точки зрения ОО это не имеет большого смысла.

Однако у VB нет способа пометить класс как Shared, как в C #. В C # вы, вероятно, отметили бы этот класс как static class - MustInherit, скорее всего, был добавлен, чтобы попытаться помешать людям создать его экземпляр, даже если это в основном статический класс.

...