Pergunta

Por que eu não posso capaz de especificar tipo estático de métodos de interface.

Existe alguma alternativa para fazer isso ??

mas eu deve usar apenas inerface insted de classe abstrata.

/

Existe algum problema em specifing acesso especificador na interface?

Eu quero especificar os eventos na interface e que deve ser acessado apenas por classe implementado assim que eu quero protegida acesso especificador para esse evento.

e eu tenho certeza de função que pode ser fazer uso da interface em outra classe, nesse caso, eu posso usar especificador de acesso público.

Foi útil?

Solução

Eu não sei que língua você está tomando sobre, mas eu vou responder como se estivesse em C #.

Por que eu não posso capaz de especificar tipo estático de métodos de interface. Existe alguma alternativa para fazer isso ??

É porque você não pode substituir métodos estáticos. O que você está tentando alcançar?

Membros em interfaces são sempre públicas em C #. Se você precisa ter outros níveis de proteção, use uma classe abstrata. Qual seria o propósito de eventos protegidos se você não pode acessá-los a partir da interface? Não tem nada a ver com a interface, em seguida, (lembre-se, a interface não pode ter qualquer código). Se você está se referindo a que as classes única aplicação pode elevar os acontecimentos, a certeza de que eles são os únicos que podem elevar-los. Eventos são construídas dessa forma - apenas a classe em si pode gerar eventos. Você não pode levantar um evento externo da classe (exceto se você tiver um método na classe, elevando o evento).

Outras dicas

interfaces de apenas descrevem o seu implementador ao público. A única modificador de acesso para uma interface é "interno" na própria interface, o que o torna um intertface só é visível para todos os membros do mesmo conjunto ou às feitas conhecidas com o atributo "InternalsVisibleTo".

Se apenas implementators deve ver um determinado evento, em seguida, que o evento teria que ser em algum tipo de classe base.

Um método estático é praticamente um remanescente da programação procedural. eles têm seu uso (ver por exemplo, métodos de extensão), mas realmente não tem muito a ver com OOP.

Eu estou em perda sobre o que você quer dizer com a primeira pergunta, mas sua segunda pergunta sobre o uso protegida em interfaces é uma linha reta "não". Interfaces são chamados de "interfaces", porque eles especificar o "interface" (isto é, métodos públicos) em que você pode se comunicar com esse objeto.

A minha experiência com OOP é em relação ao ActionScript 3, mas estou certo de que isso é relativo.

Os métodos estáticos não podem ser overidden e eles não se acostumar quando uma classe estende a classe ancestral.

modificadores de acesso não são utilizados na interface porque a interface é utilizada para métodos de instalação pública.

Em AS3 uma interface é apenas uma assinatura do método com nenhum bloco, mas incluindo dados-tipos.

É importante notar que o método getter / setter assinaturas pode ser usado em uma interface bem. Estes são úteis e se você só usar um setter de ter criado um acesso só de leitura pública a uma variável privada encapsulado.

Quanto interface em vez de uma classe abstrata, tudo depende de como você deseja implementar seu código. Muitas vezes e de interface e uma classe abstrata são usados ??em conjunto para alcançar resultados diferentes, utilizando herança e polimorfismo (estende / implementos).

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