- O objetivo destes construtores é permitir que outras classes possam criar objetos a partir da classe de modelagem atual.
- Construtores não tem retorno e sempre tem o mesmo nome da classe.
- Exemplo:
public class Conta{
private int id;
private int saldo;
// Método Construtor
// Default
public conta(){
this.id = 0;
this.saldo = 0;
}
// Com parametros
public conta(int id, int saldo){
this.id = id;
this.saldo = saldo;
}
}
// Uso
public static void main(String args []){
Conta c1 = new Conta(); // Construtor default
Conta c2 = new Conta(22, 2000); // Construtor com parametros
}
- Herança ocorre quando uma classe passa a herdar características (atributos e métodos) definidas em outra classe, especificada como superclasse.
- A palavra extends permite realizar a herança da classe
- Exemplo:
Superclasse
- Pessoa
public class Pessoa {
private String nome;
public Pessoa(String nome){
setNome(nome);
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public void mostrar(){
System.out.println(getNome());
}
}
Classes extend
- Pessoa Fisica
public class PessoaFisica extends Pessoa {
private String rg;
public PessoaFisica(String nome){
super(nome);
}
public PessoaFisica(String nome, String rg){
super(nome);
setRg(rg);
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public void mostrar(){
super.mostrar();
System.out.println(getRg());
}
}
- A ideia geral do polimorfismo é que um objeto de uma determinada classe mais genérica (a superclasse) possa assumir diferentes comportamentos, gerando objetos distintos, dependendo de certas condições.
- Esse mecanismo de redefinição de métodos entre superclasses e subclasses é conhecido como overriding, diferente do mecanismo de sobrecarga (overloading) de métodos que ocorre em umamesma classe.
- Exemplo:
public class Imovel {
private String endereco;
private int nQuartos;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public int getnQuartos() {
return nQuartos;
}
public void setnQuartos(int nQuartos) {
this.nQuartos = nQuartos;
}
// MÉTODO QUE "SOFRERA" O '@Override'
public void Mostrar(){
System.out.println("Endereço: " + getEndereco());
System.out.println("Numero de Quartos: " + getnQuartos());
}
}
public class Casa extends Imovel{
private double metragemQuintal;
public double getMetragemQuintal() {
return metragemQuintal;
}
public void setMetragemQuintal(double metragemQuintal) {
this.metragemQuintal = metragemQuintal;
}
@Override
public void Mostrar() {
System.out.println("CASA:");
super.Mostrar();
System.out.println("Metragem Quintal: " + getMetragemQuintal());
}
}
- A palavra super permite permite importar atributos ou métodos das classes que está sendo realizado a herança
- Exemplo:
- Não permite a geração de instâncias a partir dela
- Utilizado para definir uma classe genérica que serve como molde para outras classes, ex: classe abstrata pessoa é utilizado por pessoa fisica e pessoa juridica
- Utiliza a palavra-chave abstract para definir a classe abstrata
- Exemplo:
abstract class Pessoa{
private String nome;
private int idade;
...
}
public class PessoaFIsica extends Pessoa{ ... }
- Permite estebelercer um acordo entre classes
- Não permite a implementação de métodos, apenas a especificação
- É obrigátorio a utilização e implementação dos métodos especificados na interface
- Utiliza as palavras-chave interface e implements
- Podem ser implementadas mais de uma interface
- Exemplo:
public interface Aparelho{
public void liga();
public void desligar();
}
public class Celular implements Aparelho{
@Override
public void ligar() {
System.out.println("Ligar Celular");
}
@Override
public void desligar() {
System.out.println("Desligar Celular");
}
}