Você está aqui: ActionScript ::: Dicas de Estudo e Anotações ::: Modificadores

Aprenda a usar o modificador (atributo) static para modificar variáveis e métodos de uma classe

Quantidade de visualizações: 8068 vezes


O modificador (atributo em ActionScript) static é usado para especificar que um método ou variável pertence à uma classe e não aos objetos dessa classe. Em outras palavras, podemos acessar métodos, constantes e variáveis marcadas como static em uma classe sem a necessidade de construir uma instância dessa classe.

Tome por exemplo a classe Math. Todos os métodos, variáveis e constantes públicas são marcadas como static. Isso permite que usemos código como o seguinte:
var valor:Number = Math.ceil(45.6);
Veja que usamos o nome da classe e o método que desejamos chamar. Vamos escrever um trecho de código exemplificando isso. Comece criando a classe a seguir:
package{
  public class UtilidadesString{

    // método static que remove os espaços
    // antes e depois de uma string
    public static function trim(str:String):String{
      return str.replace(/(^\s+)|(\s+$)/g, ""); 
    }    
 
  }
}
Salve esta classe como "UtilidadesString.as" e veja como usá-la em um programa Flex:
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="iniciar()">
  
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;      

      public function iniciar():void{
        var frase:String = "   Tenho espaços no " +
          "início e fim.    ";

        // vamos remover os espaços
        frase = UtilidadesString.trim(frase);        
 
        Alert.show("#" + frase + "#");
      }
    ]]>
  </mx:Script>

</mx:Application>
Como você pode ver, o método trim da classe UtilidadesString é marcado como static:
public static function trim(str:String):String{
  return str.replace(/(^\s+)|(\s+$)/g, ""); 
}
Isso permitiu que ele pudesse ser chamado na aplicação Flex sem a necessidade de se construir uma instância da classe UtilidadesString. Tudo que fizemos foi usar o nome da classe e o nome do método:
frase = UtilidadesString.trim(frase);
Vejamos agora um exemplo usando uma variável marcada como static. Crie a seguinte classe:
package{
  public class Aviao{

    // variável marcada como static
    public static var quantidade:int;

    // construtor da classe   
    public function Aviao(){
      quantidade++;
    } 

  }
}
Salve esta classe como "Aviao.as" e analise-a cuidadosamente. Perceba que temos uma variável chamada quantidade do tipo inteiro e marcada como static. Isso quer dizer que a variável pertence à classe Aviao e não às suas instâncias. Observe ainda que esta variável é incrementada todas as vezes que o construtor da classe é chamado. Veja agora como usar esta classe em um programa Flex:
<?xml version="1.0" encoding="iso-8859-1"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  applicationComplete="iniciar()">
  
  <mx:Script>
    <![CDATA[
      import mx.controls.Alert;      

      public function iniciar():void{
        // cria instâncias da classe avião        
        var aviao1:Aviao = new Aviao(); 
        var aviao2:Aviao = new Aviao();
        var aviao3:Aviao = new Aviao();

        // obtém a quantidade de aviões criados
        var quant:int = Aviao.quantidade;

        Alert.show(quant + " aviões foram criados.");
      }
    ]]>
  </mx:Script>

</mx:Application>
Quando você executar este programa verá a seguinte mensagem:
3 aviões foram criados.
Isso aconteceu porque criamos três instâncias da classe Aviao e, como era de se esperar, a cada construção de uma instância, o valor da variável é incrementado. Finalmente nós acessamos seu valor usando o nome da classe:
var quant:int = Aviao.quantidade;
Quer saber o que aconteceria se tentássemos acessar a variável quantidade a partir de uma instância da classe?
var quant:int = aviao1.quantidade;
Em ActionScript 3.0 teríamos a seguinte mensagem de erro de compilação:
Error: Access of possibly undefined property
quantidade through a reference with static 
type Aviao.

  var quant:int = aviao1.quantidade;
A mensagem nos diz que não é possível acessar uma variável marcada como static a partir de referências a objetos da classe.

Por fim, saiba que não é possível acessar variáveis, constantes e métodos não static a partir de um método marcado como static. Isso faz sentido. Se o método pertence à classe e não às suas instâncias e poderá ser chamado sem que nenhuma instância da classe seja criada, é razoável supor que, ao chamar ou acessar membros de instância, o ambiente de compilação ou execução emita mensagens de erro. Veja o que acontece tentando compilar um programa Flex que faz uso da seguinte classe:
package{
  public class Aviao{

    // variável não é static
    private var marca:String;

    public static function umMetodo():void{
      // tenta acessar uma variável não
      // static a partir de um método static
      marca = "Fox57";
    }
 
  }
}
Em ActionScript 3.0 teremos a seguinte mensagem de erro de compilação:
Error: Access of undefined property marca.

marca = "Fox57";
^
Esta mensagem de erro não ajuda muito. Tudo que o compilador nos diz é que "houve uma tentativa de acessar uma variável não definida". O mais certo seria "Não é possível acessar dados não static a partir de métodos static". Mas tudo bem. Um dia o pessoal da Adobe chega lá.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de ActionScript

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 31 usuários muito felizes estudando em nosso site.