Elementos Essenciais da Linguagem Java
Elementos Essenciais da Linguagem Java
Assuntos
Especialização
Construtores
1 Java Beans
Créditos
Autor
Prof. Alessandro Cerqueira
([Link]@[Link])
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
3
Especialização
• Utilizamos palavra reservada extends para indicar que
uma classe é especialização de outra.
• Em Java não há herança múltipla; ou seja, uma classe
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Classe Pessoa
package dominio;
Classe Aluno
Object
package dominio;
Construtores
• Estratégia de Programação: Toda vez que formos
codificar uma classe devemos escrever um ou mais
construtores.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Construtores
• Regra: Quando estabelecermos uma especialização, todos
construtores das subclasses sempre deverão chamar um
construtor de sua superclasse na primeira linha de código.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Super
• Se um método for redefinido em uma subclasse, mas desejarmos
chamar na subclasse a implementação presente em sua superclasse,
utilizamos a instrução:
super.<nome do método>(...)
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
• Exemplo:
– Considere que adicionamos na classe Pessoa o método toString com a
seguinte implementação:
@Override
public String toString() {
return [Link] + [Link]();
}
– Veja as considerações abaixo:
[Link](); // Chama a implementação de Pessoa
[Link](); // Chama a implementação de Object
10
Construtores
• Se não colocarmos pelo menos um construtor na
classe, o compilador colocará um construtor default.
– A assinatura do construtor default é vazia.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Construtores - Exemplo
Código Original Código Processado pelo Compilador
public class A public class A extends Object {
{ public A() {
} super();
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
}
}
public class B extends A { public class B extends A {
public B(int x) { public B(int x) {
} super();
}
}
}
public class C extends B public class C extends B {
{ public C() {
} super(); // Erro!!!
}
OBS: Todo texto que não foi }
escrito em verde corresponde
a coisas que foram acrescentadas // Teremos um erro neste caso pois a classe
pelo compilador. // B não tem um construtor com assinatura
// vazia
Construtores - Exemplo
12
package model;
Construtores - Exemplo
public final String getCódigo() {
return this.código;
}
OBS: Repare que para instanciar um objeto Disciplina é necessário repassar para o new os parâmetros código,
nome e numCréditos.
Construtores
• Quando houver sobrecarga de construtores e desejarmos evitar que
dois ou mais construtores tenham que repetir um trecho de código,
podemos utilizar a instrução this( ... ) para chamar um construtor a
partir de outro.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
• Exemplo:
public Disciplina(String código, String nome, int numCréditos)
{
[Link]ódigo(código);
[Link](nome);
[Link]éditos(numCréditos);
}
Método finalize()
• Método presente na classe Object e que pode ser
redefinido nas classes.
• Teoricamente, este método é chamado sempre
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Classe Abstrata
• Para indicarmos que uma classe é abstrata, utilizamos o
modificador abstract.
– A determinação se uma classe é ou não abstrata depende do
domínio.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
package model;
Método Abstrato
• Método que colocamos na interface da classe mas que não
apresenta implementação
– Provavelmente não conseguimos colocar a codificação pois não conseguimos
definir um código que valha para a classe e para as suas especializações.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
• Exemplo:
package model;
Bloco static
• O bloco static é executado sempre que uma classe for carregada
pelo Class Loader.
• Só poderá manipular com atributos e métodos estáticos:
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
package dominio;
public Aluno()
{
[Link][[Link]++] = this;
...
}
...
}
19
Late Binding
• Para termos polimorfismo, é necessário que a linguagem
ofereça Late Binding.
– Verificação realizada em tempo de execução para se descobrir o
método a ser executado.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Colisões
• Se com as várias cláusulas import tivermos duas ou mais
classes com o mesmo nome, é necessário colocar a sua
descrição (com pacote) completa.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
• Ex:
import [Link]; // Date do pacote [Link]
import [Link]; // Date do pacote [Link]
...
Date umaData; // Erro! Qual Date queremos?
[Link] novaData; // Ok! Escrevemos de forma
// completa pois há colisão
// de nomes de classe no import
21
Atribuições na
Declaração de Atributos
• Ao declararmos um atributo em uma classe, podemos
fazer a atribuição de um valor de inicialização para ele.
– Estas atribuições são executadas imediatamente antes da
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
public Pessoa() {
// código opcional de inicialização
}
• Propriedades
– Propriedades são definidas por atributos e métodos get/set. Na maioria dos casos,
declara-se os atributos como private e os métodos get e set como public; por
exemplo:
private String nome;
public String getNome(){
return [Link];
}
public void setNome(String nome) {
[Link] = nome;
}
24
Visibilidade
• Para cada propriedade da classe (atributo, método ou classe
interna) associamos um tipo de visibilidade. Os modificadores de
visibilidade indicam o nível de acesso ao método ou atributo.
– Private: a propriedade só pode ser utilizada dentro do escopo da classe
onde foi declarada.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Visibilidade
• Na declaração da classe podemos associar um aspecto
de visibilidade que pode ser public ou “package” (não
podemos utilizar protected nem private, a não ser que
sejam classes internas). public indica que a classe
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Visibilidade
• Como os atributos devem ser privados, é necessária a
implementação de métodos que permitam o acesso
de leitura e escrita a estes métodos.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Exemplo de Visibilidade
pacoteUm
A
private int x
protected int y
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
(package) int z
public A()
public int getX()
C
public void setX(int)
public A criaObjetoA()
B
public B()
pacoteDois
D
public D()
29
Exemplo de Visibilidade
package pacoteUm;
public class A {
// A visibilidade de x é private, o que indica que o
// atributo x só pode ser manipulado no código dentro
// do escopo da classe A.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
private int x;
// A visibilidade de y é protected, o que indica que
// o atributo y pode ser manipulado no código dentro do
// escopo da classe A, dentro do escopo de suas especializações
// e dentro do escopo das classes de seu pacote (pacoteUm)
protected int y;
// A visibilidade de z é package, o que indica que o
// atributo z pode ser manipulado no código dentro do escopo
// da classe A e dentro do escopo das classes de seu
// pacote (pacoteUm)
int z;
(continua...)
30
Exemplo de Visibilidade
(continuação da classe A)
public A() {
this.x = 10;
this.y = 20;
this.z = 30;
}
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Exemplo de Visibilidade
package pacoteUm;
public class B extends A {
public B() {
// Não posso fazer pois a visibilidade de x foi declarada
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Exemplo de Visibilidade
package pacoteUm;
public class C {
public A criaObjetoA() {
A ptrA = new A();
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Exemplo de Visibilidade
package pacoteDois;
import pacoteUm.*;
public class D extends A {
public D() {
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Classes Internas
• Classe que é declarada dentro do escopo de outra classe.
• Assim, dentro do escopo de uma classe podemos ter atributos, métodos e/ou
classes internas.
• Geralmente utilizamos uma classe interna quando criar uma pequena classe que
(a princípio) só precisa ser utilizada no código de outra.
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
class Endereço {
private String rua;
private String número;
private String complemento;
...
}
...
}
A classe Endereço foi declarada dentro do escopo da classe Pessoa.
35
Classe Interna
• Apesar da classe Endereço ter sido declarada
dentro da classe Pessoa, outras classes podem
utilizá-la. Neste caso, as declarações deverão
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
[Link](0);
}
}
);
...
• O que é isto????
– Indico quem é o ActionListener do botão cancelar
– Instancio um objeto de ActionListener. Apesar de ser uma interface, isto é
permitido pois juntamente com a instanciação, estamos implementando o
método actionPerformed.
– Na prática, o compilador cria com esta declaração uma classe interna “sem
nome” (o nome é dado automaticamente). A geração do bytecode é semelhante
ao caso da classe Interna com nome.
38
Classe [Link]
• Um objeto da classe Class descreve os metadados de uma
classe
– Metadados: Dados que descrevem aspectos sobre dados
• Ex: Dados que descrevem como os dados estão estruturados.
Dados que descrevem quando e quem manipulou os dados
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
Classe [Link]
• A partir de um objeto da classe Class podemos saber quais são os
atributos e métodos presentes em uma classe, recuperando os
objetos Method e Field associados à classe.
Method[] métodos = [Link]();
Elementos da Linguagem Java - Alessandro Cerqueira - 03/11/2025
for(Method m : métodos)
[Link]([Link]());