A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

3.1.7 Variáveis de Classe e Instância

Apresentações semelhantes


Apresentação em tema: "3.1.7 Variáveis de Classe e Instância"— Transcrição da apresentação:

1 3.1.7 Variáveis de Classe e Instância
As variáveis de uma classe podem ser de instância ou de classe. Cada classe possui as suas próprias cópias das variáveis de instância, enquanto que as variáveis de classe são compartilhadas. Alan Santos

2 3.1.7 Variáveis de Classe e Instância
Altere a classe ContaCorrente acrescentando a variável de classe dinheiroTotal, para guardar o somatório dos saldos de todas as contas. Alan Santos

3 3.1.7 Variáveis de Classe e Instância
class ContaCorrente { static float dinheiroTotal; float saldo; String nome; float verificaSaldo ( ) { return saldo; } void depositaValor (float valor) { saldo = saldo + valor; dinheiroTotal += valor; void retiraValor (float valor) { if (saldo>=valor) { saldo = saldo – valor; dinheiroTotal -= valor; Alan Santos

4 3.1.7 Variáveis de Classe e Instância
Cada instância da classe ContaCorrente (objeto) terá as mesmas variáveis (saldo e nome), porém, elas podem ter valores diferentes em cada instância. A variável de classe (dinheiroTotal), porém, é compartilhada por todos os objetos. Por isso, possui o mesmo valor para todos os objetos e se um objeto modificar o seu valor, o novo valor é visto por todos os outros objetos. Alan Santos

5 3.1.7 Variáveis de Classe e Instância
Múltiplas instâncias de uma classe Alan Santos

6 3.1.7 Variáveis de Classe e Instância
Membros static Definem membros da classe Não existem em cada objeto Pode ser aplicado a atributos e métodos Podem ser acessados por objetos Não é necessário criar objeto, pode-se acessar diretamente da classe NomeClasse.membro Alan Santos

7 3.1.7 Variáveis de Classe e Instância Nome do projeto: poligonos
public class ImprimirStrings { 1 String str = “atributo-nao-estatico”; 2 public void imprimir() { 3 String a = new String(“abcdef”); 4 String b = new String(“xyz”); 5 System.out.println(a.concat(b)); 6 } 7 public static void main(String[] args) { 8 imprimir(); 9 } 10 } Alan Santos

8 3.1.7 Variáveis de Classe e Instância
O compilador acusa o seguinte erro na linha 9: non-static method imprimir() cannot be referenced from static context. Por que isso acontece? Um método de classe não pode chamar um método de instância, pois não há objeto instanciado. Alan Santos

9 3.1.7 Variáveis de Classe e Instância
Se fizermos referência ao atributo não-estático ‘str’ no método main ou no imprimir obtermos o seguinte erro de compilação: non-static variable str cannot be referenced from static context. Por que isso acontece? Métodos estáticos NÃO acessam variáveis de instância Métodos estáticos SÓ acessam variáveis estáticas e/ou declaradas no corpo do método Alan Santos

10 3.1.7 Variáveis de Classe e Instância
Resumindo: Métodos e atributos não-estáticos não podem ser referenciados em contextos estáticos. Alan Santos

11 3.1.7 Variáveis de Classe e Instância
1 public class Circulo { 2 static final double PI = ; 3 public static double calculaArea(double raio) { 4 return PI * ( raio * raio ); 5 } 6 } 7 // um método qualquer // utilizamos o nome da classe 10 double areaCirculo = Circulo.calculaArea(5); Alan Santos

12 3.1.7 Variáveis de Classe e Instância
Não devemos abusar de métodos estáticos porque um programa que utiliza somente métodos de classe não é orientado a objetos (não há objetos) Alan Santos


Carregar ppt "3.1.7 Variáveis de Classe e Instância"

Apresentações semelhantes


Anúncios Google