Buscar

04-Sobrecarga_Construtor_Destrutor

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Thiago Rodrigues POO 1
Métodos Sobrecarregados
• Objetivo: determinar vários significados para um mesmo identificador
de função/método sobre do mesmo escopo.
• Requisito: as funções devem diferir no tipo e/ou quantidade de
parâmetros;
public void set(int idade);
public void set(String nome);
public void set(String nome, int idade)
• O compilador escolherá a versão correta a partir dos parâmetros
utilizados na chamada do método;
Thiago Rodrigues POO 2
public class JOverload {
private String nome;
private int idade;
public void set(int i) {
idade = i;}
public void set(String n){
nome = n;}
public void set(String n, int i){
nome = n;
idade = i; }
public int getIdade() {
return idade;}
public String getNome() {
return nome;}
}
public class JMain {
public static void main(String [] args){
JOverload obj;
obj = new JOverload();
obj.set(10);
obj.set("Thiago");
obj.set("Thiago", 20);
} }
Thiago Rodrigues POO 3
Ambigüidade
• Ocorre que uma invocação de método pode se referir à dois ou mais
métodos implementados;
• No Java, quando acorre ambiguidade é exibido um erro de compilação;
package PCK;
public class JAmbiguity { 
public void Sub(int x, float y){
System.out.println("Sub com param int e float!!");
}
public void Sub(float x, int y){
System.out.println("Sub com param float e int!!");
}
}
import PCK.*;
public class JMain {
public static void main (String []args){
JAmbiguity objeto = new JAmbiguity();
objeto.Sub(10.3F, 5);
objeto.Sub(13, 7.5F);
objeto.Sub(10, 5); 
}
}
Thiago Rodrigues POO 4
Construtores
public class JTeste {
String nome;
int idade;
public JTeste(String n, int i){
nome = n; idade = i;
}
public JTeste (String n){
nome = n;
} }
JTeste obj;
obj = new JTeste(“Edeuclécio”,20);
JTeste obj2;
obj2 = new JTeste(“Edeuclécio”);
....
• Além do construtor padrão presente em todas as classes, o programador
pode definir seus próprios construtores;
• possuem o mesmo nome das respectivas classes;
• similares a métodos, mas não têm tipo de retorno;
• pode haver mais de um por classe (overloading)
Thiago Rodrigues POO 5
Destrutores
• Java realiza a coleta de lixo automática da memória;
• Quando um objeto não é mais utilizado ele é marcado para a coleta de lixo;
• Cada classe pode ter seu próprio finalizador, que será chamado pelo
coletor de lixo antes do objeto ser desalocado;
• Deve-se chamar finalize(), sem nenhum parâmetro e nenhum valor de
retorno;
public class JTeste {
String nome;
int idade;
void finalize () {
System.out.println(“fim”);
}
}
...
System.gc();
....
Thiago Rodrigues POO 6
Faça uma classe JEscola com os seguintes atributos e métodos:
:: Nome da escola
:: Qtd alunos
:: Qtd de Professores;
:: Mensalidade
:: Salário
:: Construtor para inicializar o parâmetro Nome da Escola
:: Métodos Get a Set para cada atributo
:: método para calcular o lucro da escola;
Thiago Rodrigues POO 7
package PCK;
public class JEscola {
private String Nome_Escola;
private int Qtd_Profs;
private int Qtd_Alunos;
private float Mensalidade;
private float Salario;
public JEscola(String nome){
Nome_Escola = nome;
}
public float lucro(){
return (Qtd_Alunos * Mensalidade)-(Qtd_Profs * Salario);
}
Thiago Rodrigues POO 8
public float getMensalidade() {
return Mensalidade; }
public void setMensalidade(float M) {
Mensalidade = M; }
public int getQtd_Alunos() {
return Qtd_Alunos; }
public void setQtd_Alunos(int Alunos) {
Qtd_Alunos = Alunos; }
public int getQtd_Profs() {
return Qtd_Profs; }
public void setQtd_Profs(int Profs) {
Qtd_Profs = Profs; }
public float getSalario() {
return Salario; }
public void setSalario(float Sal) {
Salario = Sal; } 
}
Thiago Rodrigues POO 9
import PCK.JEscola;
public class Principal {
public static void main(String[] args) {
JEscola escola = new JEscola("PCII School");
escola.setQtd_Alunos(3000);
escola.setMensalidade(600.00f);
escola.setQtd_Profs(200);
escola.setSalario(6000.00f);
System.out.println("Lucro: " + escola.lucro());
}
}
Thiago Rodrigues POO 10
Passagem de Parâmetros em Java
• Normalmente LP disponibilizam dois tipos de passagem de parâmetros;
• Valor x Referência;
• Entretanto, Java só disponibiliza passagem de parâmetros por valor; 
public class JClasse {
private void x_2(int aux){
aux = aux * 2;
}
public void Pc() {
int valor = 5;
this.x_2(valor);
}
}
5
FF012
5
AC461
valor aux
Thiago Rodrigues POO 11
class JDado{
private int idade;
private String String;
public int getIdade() {
return idade;}
public void setIdade(int idade) {
this.idade = idade;}
public String getString(){
return String;}
public void setString(String string){
String = string;}
}
public class JClasse {
private JDado obj;
public void Cria(){
obj = new JDado();
obj.setString("Edeuclécio");
obj.setIdade(15);}
private void oper(JDado aux){
aux.setIdade(aux.getIdade() + 1);
...
} }
aux
BA326
FF012
obj
Edeuclécio
15
BA326
BA326
DF501

Outros materiais