0

Membros estáticos no Java

#Java
Claudio
Claudio

Também chamados membros de classe

  • Em oposição a membros e instância


São membros que fazem sentido independentemente de objetos. Não precisam de objetos para serem chamados. São chamados a partir do próprio nome da classe.


Aplicações comuns:

  • Classes utilitárias:
  • Math.sqrt(double)
  • Declaração de constantes:
  • public static final double PI = 3.141559


Uma classe que possui somente membros estáticos, pode ser uma classe estática também. Esta classe não poderá ser instanciada.


Problema exemplo


Programa que ler um valor numérico qualquer, e daí mostrar quanto seria o valor de uma circunferência e do volume de uma esfera para um raio daquele valor.


Versão 1: métodos na classe Main do programa.

OBS: dentro de um método estático você não pode chamar membros de instância da mesma classe.

public class Main { 

  public static final double PI = 3.14159; 
  
  public static void main(String[] args) {
    
    Locale.setDefault(Locale.US); 
    Scanner sc = new Scanner(System.in); 
    
    System.out.print("Enter radius: "); 
    double radius = sc.nextDouble(); 
    double c = circumference(radius); 
    double v = volume(radius); 
    System.out.printf("Circumference: %.2f%n", c);
    System.out.printf("Volume: %.2f%n", v); 
    System.out.printf("PI value: %.2f%n", PI); 
    
    sc.close(); 
  } 
    
  public static double circumference(double radius) { 
    return 2.0 * PI * radius; 
  } 

  public static double volume(double radius) { 
    return 4.0 * PI * radius * radius * radius / 3.0; 
    } 
  }


Versão 2: classe Calculator com membros de instância.

public class Calculator { 

  public final double PI = 3.14159;
 
  public double circumference(double radius) { 
    return 2.0 * PI * radius; 
  } 

  public double volume(double radius) { 
    return 4.0 * PI * radius * radius * radius / 3.0; 
  } 
} 

// Classe Main
                      
Calculator calc = new Calculator(); 

System.out.print("Enter radius: "); 
double radius = sc.nextDouble(); 
double c = calc.circumference(radius); double v = calc.volume(radius); 
System.out.printf("Circumference: %.2f%n", c); 
System.out.printf("Volume: %.2f%n", v); 
System.out.printf("PI value: %.2f%n", calc.PI);


Versão 3: classe Calculator com método estático.

Na versão 3 os valores dos cálculos não mudam para calculadoras diferentes, ou seja, são cálculos estáticos. O valor de Pi também é estático.

public class Calculator { 
  public static final double PI = 3.14159; 
  
  public static double circumference(double radius) { 
      return 2.0 * PI * radius; 
  } 
  
  public static double volume(double radius) { 
    return 4.0 * PI * radius * radius * radius / 3.0; 
  } 
}
                    
// Classe Main

System.out.print("Enter radius: "); 

double radius = sc.nextDouble(); 
double c = Calculator.circumference(radius); 
double v = Calculator.volume(radius); 
System.out.printf("Circumference: %.2f%n", c); 
System.out.printf("Volume: %.2f%n", v); 
System.out.printf("PI value: %.2f%n", Calculator.PI);                                          
0
1

Comentários (0)

Graduado em Análise e Desenvolvimento de Sistemas

Brasil