Pergunta

Eu estou olhando para uma classe VB.NET (que eu não escrevi) que é declarado MustInherit (abstract em C #, eu acredito) que tem três métodos, os quais são definidos como Shared (static em C #) . Não há propriedades ou campos na classe - apenas os três métodos. De uma perspectiva OO, isso faz algum sentido?

Meu pensamento não é, pois, tornando-MustInherit, você está dizendo essencialmente que você não pode criar uma instância dessa classe - você deve herdar a partir dele e criar uma instância do derivada classe . Mas desde que todos os métodos são compartilhados, você nunca vai realmente criar uma instância da classe pai de qualquer maneira, de modo que o MustInherit não é bom. Você pode muito bem não marcá-lo MustInherit e apenas herdar-lo quando quiser.

Existe uma situação onde a criação de uma classe desta forma faz sentido?

Foi útil?

Solução

Como já foi dito, parece que eles realmente queriam uma classe # estática C. VB do equivalente a "estática" é "compartilhada", mas você não pode aulas de marca "compartilhada" em VB. A diferença é que alguém poderia herdar desta classe e, em seguida, criar uma instância. Classes C # estáticos são selados.

O que eles deve tem feito é usar um Module. A Module VB e C # classe estática são praticamente idênticos: membros estão associados com o tipo, em vez de uma instância e você não pode herdar a partir deles

.

Outras dicas

Do ponto de vista OO, isso não faz muito sentido.

No entanto, VB não tem uma maneira de sinalizar uma classe como Shared, como C # faz. Em C #, você bandeira provável que esta classe como um static class - o MustInherit provavelmente foi adicionado para tentar impedir as pessoas de criar uma instância dele, mesmo que ele é basicamente uma classe estática

.

Em C # uma classe pode ser declarada como estático (= Shared), e acho que não VB.NET não permite isso, então como uma solução alternativa é marcado abstrato (MustInherit), de modo que nunca é instanciado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top