O LSP se aplica à passagem de uma instância de uma classe para um método, fazendo com que o método faça algumas coisas com essa instância e geralmente produza algum tipo de resultado. Isso não importa para classes estáticas, pois em C # você não pode criar uma instância de uma classe estática.
Ainda mais importante, as classes estáticas são seladas e, portanto, não podem ser herdadas. Isso torna sua pergunta discutível no que diz respeito ao C #.
Você poderia dizer que as classes estáticas são sempre compatíveis com LSP, pois você nunca pode produzir uma subclasse que viole esse princípio. Você também pode dizer que as classes estáticas nunca são compatíveis com LSP pelo mesmo motivo.
Em Java, as classes estáticas são um pouco diferentes. Você não pode marcar uma classe de nível superior como "estática"; portanto, se você quiser criar uma classe de utilitário semelhante às classes estáticas do C #, precisará declará-la como
final
e ocultar seu construtor. Depois de fazer isso, no entanto, eles se comportam de maneira semelhante ao C # - você não pode instanciar ou subclassificar. Você pode declarar uma classe interna como
static
, mas isso não significa o mesmo que em C #: simplesmente denota uma
classe de nível superior aninhada .
O VB.NET se comporta exatamente da mesma maneira que o C #, neste caso, até onde eu sei.
Você não mencionou se está interessado nos outros princípios, mas vou incluí-los de qualquer maneira para garantir a integridade.
S princípio da responsabilidade ingle : uma classe estática facilmente seguir esse princípio.
O princípio caneta / fechado : como as classes estáticas são seladas, elas nunca podem seguir esse princípio.
L iskov princípio de substituição : como acima.
I princípio nterface segregação : não se aplica a uma única classe, mas dividindo uma classe estática grande em partes menores, mais especializado poderia ser um passo na direção seguindo este princípio.
D princípio ependency inversão : classes estáticas não podem implementar interfaces, portanto, qualquer classe de usá-lo dependerá sempre o que quer implementação existe no momento. As classes estáticas, portanto, violam esse princípio.
Como as classes estáticas não atendem a todos os 5 critérios, elas não são SOLID.