Modificadores de JScript
Modificadores de JScript altere o comportamento e a visibilidade das classes, interfaces ou membros de classes ou interfaces. Você pode usar modificadores ao definir classes e interfaces, mas geralmente não são necessárias.
Modificadores de visibilidade
Modificadores de visibilidade restringem como fora código acessa classes, interfaces e seus membros. Você pode usar restrições para incentivar o bom, impedindo chamadas para métodos internos especializados e campos práticas de programação orientada a objeto.
Por padrão, qualquer código que pode acessar uma classe pode acessar qualquer um dos membros dessa classe. Usando os modificadores de visibilidade, você pode seletivamente impedir código externo acessando os membros de determinada classe, permitir que apenas classes no mesmo pacote para membros de acesso ou permitir somente as classes derivadas acessar membros de classe.
Modificadores de visibilidade não podem ser aplicados a funções globais ou variáveis. Os modificadores de visibilidade só podem ser usados juntos são protected e internal.
Modificador de visibilidade |
Válido para |
Significado |
---|---|---|
classe, membro da classe, interface, membro de interface ou enumerações |
Membro é visível para qualquer código que tenha acesso à classe sem restrições na visibilidade. Por padrão no JScript, classes, interfaces e seus membros são públicos. |
|
membro de classe |
Membro é visível somente dentro da classe na qual é declarada. Não é visível para classes derivadas. O código fora da classe atual não pode acessar membros particulares. |
|
membro de classe |
Membro é visível somente dentro da classe na qual é declarado e a quaisquer classes derivadas dessa classe. O modificador protegido não pode ser usado para classes no escopo do pacote, mas ele pode ser usado para classes aninhadas. |
|
classe, membro da classe de enumeração |
A classe, o membro de classe ou enumeração é visível em qualquer lugar dentro do pacote no qual é declarada. Não é visível fora do pacote. |
Modificadores de herança
Modificadores de herança controlam como os métodos e propriedades de classes derivadas substituem métodos e propriedades na classe base. Usando esse controle, você pode gerenciar se os métodos de classes derivadas substituem uma classe que você criar.
Por padrão, os métodos de classe derivada substituirão os métodos de classe base, a menos que a versão-safe Ocultar atributo é usado na classe derivada. Esse atributo ajuda a impedir a substituição. Modificadores de herança permite que você ajudar a controlar se determinados métodos são substituídos sempre ou nunca.
Em algumas situações, talvez você precise garantir que um método de classe base não é substituído. Por exemplo, se você definir uma classe em um pacote, você pode usar o final modificador para garantir que as classes derivadas não alterará os métodos e propriedades da classe.
Por outro lado, você poderá exigir a sua classe de determinados métodos substituídos. Por exemplo, você pode criar uma classe que fornece algumas funcionalidades básicas, mas usa o abstrata modificador de alguns métodos. As implementações dos métodos abstratos são até o escritor da classe derivada.
Os modificadores de versão-safe, também gerenciam substituindo, gerenciá-lo do lado da classe derivada em vez do lado da classe base. Modificadores de versão-safe terão efeito somente se o método de classe base que estão substituindo não tem modificadores de herança.
Não é possível combinar dois modificadores de herança ou combinar um modificador de herança com a estático modificador.
Modificador de herança |
Válido para |
Significado |
---|---|---|
Classe, método ou propriedade |
Para métodos ou propriedades, esse modificador indica que o membro não tem uma implementação. Para classes, esse modificador indica que há um ou mais métodos não implementados. Uma classe abstrata ou uma classe que contém um membro abstract não pode ser instanciada usando o nova palavra-chave, mas ele pode ser usado como uma classe base. |
|
Classe, método ou propriedade |
Para classes não podem ser estendidos ou métodos que não podem ser substituídos. Usando final impede a alterar o comportamento da classe, substituindo as funções importantes de classes derivadas. Métodos com o final modificador pode ser oculto ou sobrecarregado, mas não foi substituído. |
Modificadores de seguro de versão
Modificadores de seguro de versão ajudam a controlar os métodos de classe derivada que substituem métodos na classe base. Usando esse controle, você pode gerenciar se uma classe que você criar irá substituir os métodos na classe base.
Por padrão, os métodos de classe derivada substituirão métodos na classe base, embora os modificadores de herança na definição da classe derivada podem ajudar a evitar a substituição também. Usando modificadores de seguro de versão permite que você ajudar a controlar se determinados métodos são substituídos ou não.
Em algumas situações, talvez você precise garantir que os métodos da classe base não são substituídos. Por exemplo, você pode estender uma classe para alterar o comportamento dos métodos de classe base. Se você não quiser que esses métodos para ser substituído na classe base, você pode usar o Ocultar modificador para suas declarações de método.
Por outro lado, você talvez queira substituir determinados métodos de classe de base. Por exemplo, convém alterar os métodos de uma classe sem modificar a classe. Estendendo a classe e usando o override modificador para declarações de método, você pode fazer com que os novos métodos substituir a classe de base.
Uso bem-sucedido dos modificadores de versão seguro depende de se usada ou não à declaração de métodos de classe base modificadores de herança. Métodos de classe base marcados com o final modificador não pode ser substituído e os métodos de classe base marcados com o abstrata modificador não pode ser oculto, a menos que uma implementação explícita para o método de classe base abstrata é fornecida.
Não é possível combinar dois modificadores de versão-safe ou combinar um modificador de versão segura com o estático modificador. Quando você estiver executando no modo de segurança da versão, você pode usar o modificador de apenas uma versão segura para cada método que substitui um método de classe base.
Modificador de seguro de versão |
Válido para |
Significado |
---|---|---|
Método ou propriedade |
Membro não substitui um membro com o mesmo nome na classe base. |
|
Método ou propriedade |
Por padrão, membros substituem os membros com o mesmo nome na classe base. |
Modificador de expando
O expando modificador faz com que um objeto class-based se comporte como se fosse um objeto JScript. Métodos e propriedades podem ser adicionadas dinamicamente a um objeto expando. Para obter mais informações, consulte Objetos com base em protótipo.
Você pode usar o expando modificador independentemente dos outros modificadores.
Modificador |
Válido para |
Significado |
---|---|---|
Classe ou método |
Para uma classe, a classe é fornecida um padrão, a propriedade indexada que é capaz de armazenar e recuperar propriedades dinâmicas (expandos). Para um método, indica que é um construtor de um objeto expando. |
Modificador estático
O estático modificador significa que um membro de uma classe pertence à própria classe em vez de instâncias da classe. Conseqüentemente, métodos e dados específicos de classe não esteja associados a qualquer instância específica.
Você não pode combinar o estático modificador com qualquer um dos modificadores de herança ou a versão segura.
Modificador |
Válido para |
Significado |
---|---|---|
Método, propriedade, campo ou classe |
Para métodos, indica que ele pode ser chamado sem uma instância da classe. Para campos e propriedades, designa que uma cópia é compartilhada por todas as instâncias. O estático modificador não deve ser confundido com o estático instrução, que denota o código que inicializa a classe. |