Baixe o app para aproveitar ainda mais
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
Compartilhar