Você está na página 1de 3

Prova dia 07/07.

Matéria:
- Encapsulamento: setters, getters e construtores

- Herança (conceitos práticos e teóricos)


Herança em Java:

- Permite criar novas classes (subclasses) com base em classes existentes


(superclasses).
- A subclasse herda os atributos e métodos da superclasse.
- Permite reutilização de código e criação de hierarquias de classes.
- Facilita a organização e estruturação do código.
- É alcançada usando a palavra-chave "extends" seguida do nome da superclasse ao
definir a subclasse.
- Polimorfismo (conceitos práticos e teóricos)
- Sobreposição (Override):
- Ocorre quando uma subclasse fornece uma implementação específica de um método que
já está definido na superclasse.
- Deve ter o mesmo nome, tipo de retorno e lista de parâmetros que o método da
superclasse.
- Permite alterar o comportamento do método herdado, adaptando-o às necessidades da
subclasse.
- Usa a anotação @Override para indicar explicitamente a sobreposição do método.

- Sobrecarga (Overload):
- Ocorre quando uma classe possui vários métodos com o mesmo nome, mas com
assinaturas diferentes.
- Diferentes tipos de parâmetros ou número de parâmetros distinguem os métodos.
- Permite ter métodos com funcionalidades similares, mas adaptadas a diferentes
contextos ou tipos de dados.
- Facilita a escrita de código flexível e reutilizável.

- Diferenças:

- A sobreposição é determinada pela assinatura do método, enquanto a sobrecarga é


determinada pela lista de parâmetros.
- A sobreposição substitui um método existente na superclasse, enquanto a sobrecarga cria
versões diferentes do mesmo método na mesma classe.
- A sobreposição é determinada pela assinatura do método, enquanto a sobrecarga é
determinada pela lista de parâmetros.
- Modificadores de acesso abstract e final
O modificador "abstract" é usado para indicar classes ou métodos abstratos que fornecem
implementações parciais ou definem métodos abstratos que devem ser implementados
pelas subclasses.

O modificador "final" é usado para indicar que uma classe não pode ser estendida, um
método não pode ser sobreposto e um atributo não pode ter seu valor alterado após a
atribuição inicial.
- Interface
// Definição da interface
public interface Animal {
void emitirSom();
void mover();
}
public class Cachorro implements Animal {
@Override
public void emitirSom() {
System.out.println("O cachorro está latindo.");
}
@Override
public void mover() {
System.out.println("O cachorro está correndo.");
}
}
// Utilização da interface e da classe que a implementa
public class ExemploInterface {
public static void main(String[] args) {
Animal animal = new Cachorro();
animal.emitirSom(); // Saída: O cachorro está latindo.
animal.mover(); // Saída: O cachorro está correndo.
}
}

- Interface Comparable

public class Livro implements Comparable<Livro> { import java.util.ArrayList;


private String titulo; import java.util.Collections;
private String autor; import java.util.List;
private int anoPublicacao;
public class ExemploComparable {
// Construtor, getters e setters public static void main(String[] args) {
List<Livro> listaLivros = new ArrayList<>();
@Override
public int compareTo(Livro outroLivro) { listaLivros.add(new Livro("Livro A", "Autor A", 2005));
return this.anoPublicacao - outroLivro.anoPublicacao; listaLivros.add(new Livro("Livro B", "Autor B", 1998));
} listaLivros.add(new Livro("Livro C", "Autor C", 2010));
}
Collections.sort(listaLivros);

for (Livro : listaLivros) {


System.out.println(livro.getTitulo() + " - " +
livro.getAnoPublicacao());
}
}
}
- Mapa
import java.util.HashMap; - Tratamento de
import java.util.Map;
exceção
public class TestaInterfaceMap { import java.util.InputMismatchException;
import java.util.Scanner;
public static void main(String[] args) {
public class ExemploTratamentoExcecao
Map<Integer, String> mapaNomes = {
new HashMap<>(); public static void main(String[] args) {
mapaNomes.put(1, "João Delfino"); Scanner scanner = new
mapaNomes.put(2, "Maria do Carmo"); Scanner(System.in);
mapaNomes.put(3, "Claudinei Silva");
try {
System.out.println(mapaNomes); System.out.print("Digite um
número: ");
// Resgatando o nome da posição 2 int numero = scanner.nextInt();
System.out.println(mapaNomes.get(2)); System.out.println("O número
} digitado é: " + numero);
} } catch (InputMismatchException e) {
System.out.println("Valor inválido!
Digite um número inteiro.");
} finally {
scanner.close();
}
}
}

Você também pode gostar