Buscar

Aula 6 - Métodos e Atributos Estáticos

Prévia do material em texto

Programação II
Aula 6 – Métodos e atributos estáticos
Prof. Alcemir Rodrigues Santos
alcemir@prp.uespi.br
http://www.alcemirsantos.com.br
https://les-prp-uespi.github.io
static
Blocos
Variáveis
(Variáveis de classe)
Classes 
internas
Métodos
(Método de classe)
12-Jul-21 Programação II | Alcemir Santos 2
Classe Instâncias
Características podem ser individuais (de cada objeto) ou 
compartilhadas por todos eles (de uma classe)
12-Jul-21 Programação II | Alcemir Santos 3
Variável de Classe
• Uma variável static pode ser
utilizada para se referir a uma
propriedade de todos os objetos
• nome da empresa dos Empregados,
• nome da escola dos Estudantes, etc.
• A variável static só precisa ter
memória aloca uma única vez na
classe em tempo de carregamento
• Logo, deixa o programa eficiente em
termos de memória.
class Student{ 
String name; 
String college=”UESPI"; 
} 
class Student{ 
String name; 
static String college=”UESPI"; 
} 
12-Jul-21 Programação II | Alcemir Santos 4
Método de Classe
• É possível criar método static
• Estes métodos pertencem à classe e não
aos objetos daquela classe
• Estes métodos pode ser invocado sem a 
necessidade de criar uma instância da 
classe
• Estes métodos pode acessar dados 
também static e podem mudar o valor 
deles
• O método main é estático justamente
para que a JVM não precise criar um 
objeto da classe, o que levaria a 
indeficiência de memória
class Student {
String name;
String college = ”UESPI";
static void change() {
college = ”UESPI-A 
Melhor";
}
}
12-Jul-21 Programação II | Alcemir Santos 5
Método de Classe: Restrições
• Métodos static têm duas retrições principais
• Eles não podem usar dados não estáticos ou chamar métodos não estáticos
diretamente
• As palavras this e super não podem ser utilizadas no context estático
Programação II | Alcemir Santos 612-Jul-21
Bloco static
class A2 {
static {
System.out.println("static block is 
invoked");
}
public static void main(String args[]) {
System.out.println("Hello main");
}
}
• Blocos estáticos são utilizados 
par inicializar dados estáticos
• Eles são executados antes do 
método main ser executado em 
tempo de carregamento de 
classes.
12-Jul-21 Programação II | Alcemir Santos 7
Classes internas static
class Externa {
static int data = 30;
static class Interna {
void msg() {
System.out.println("data is " + data);
}
}
public static void main(String args[]) {
Externa.Interna obj = new Externa.Interna();
obj.msg();
}
}
• É possível criar uma classe
dentro uma classe e que usa
static como modificador de 
acesso
• Ela pode acessar dados estáticos
dentro da classe externa, incluindo
os privados
• Elas não podem acessar instâncias
não estáticas de dados ou
métodos
12-Jul-21 Programação II | Alcemir Santos 8
12-Jul-21 Programação II | Alcemir Santos 9
Não utilize 
atributos estáticos 
como variáveis 
globais!
Hands-on
• Somador de variável estática e instância
Programação II | Alcemir Santos 1012-Jul-21

Continue navegando