Programação Java - Sobrecarga (Overloading)Marco Fagundes [email protected] © 2007 Marco Fagundes - [email protected] 1 Tópicos Métodos Sobrecarga de Métodos Exercício Leitura Recomendada © 2007 Marco Fagundes - [email protected] 2 Métodos Implementam as operações que agem sobre os atributos do objeto São definidos da seguinte forma: <modificador_acesso><tipo_retorno> <nome><parâmetros> public boolean sacar(double pVal){ return (saldo >= pVal); } © 2007 Marco Fagundes - [email protected] 3 Sobrecarga de Métodos (overloading) Sobrecarregar um método significa prover mais de uma versão de um mesmo método As versões do método realizam tarefas semelhantes, mas sobre dados diferentes As versões devem, necessariamente, possuir listas de parâmetros diferentes (no tipo ou no número) O tipo do valor de retorno das versões do método pode ser igual String verExtrato (){...}//1º dia do mês atual String verExtrato (int pMes){...}// 1º dia do mês informado String verExtrato (int pMes, int pDia){...}// dia específico do mês informado © 2007 Marco Fagundes - [email protected] 4 Sobrecarga de Métodos (overloading) Diferentes tipos de retorno das versões do método não são considerados para sobrecarga String verExtrato (){...} String verExtrato (int pMes){...} char[] verExtrato (int pMes){...} Erro Erro !!! !!! © 2007 Marco Fagundes - [email protected] 5 Sobrecarga de Métodos ContaCorrente numero: String saldo: float String verExtrato() String verExtrato (int pMes) String verExtrato (int pMes, int pDia) © 2007 Marco Fagundes - [email protected] 6 Sobrecarga (Overload) de Métodos public class ContaCorrente{ private String numero; Overload de private float saldo; Métodos ... public String verExtrato(){ return “Extrato do 1º dia do mês atual”; } public String verExtrato(int pMes){ return “Extrato do 1º dia do mês ” + pMes; } class TestaConta{ ... public static void main(String[] args){ } ContaCorrente c1 = new ContaCorrente(); System.out.println(c1.verExtrato()); System.out.println(c1.verExtrato(4)); } } © 2007 Marco Fagundes - [email protected] 7 Lab5 - Overload de Métodos Estenda a classe ContaCorrente adicionando um atributo limite adicional. Implemente um método para configurar o limite. Este método não recebe parâmetro e configura o limite para R$ 800,00 Realize a sobrecarga do método de configuração de limite, onde este método deve esperar um parâmetro que será gravado no atributo limite. © 2007 Marco Fagundes - [email protected] 8 Lab5 - Overload de Métodos Na classe aplicativo crie um objeto do tipo ContaCorrente e em seguida grave valores para o número e saldo. Imprima os dados do objeto criado. Ative o método de configuração do limite para o valor padrão. Imprima o limite adicional. Ative o método de configuração do limite passando como parâmetro um valor do novo limite. Imprima o novo limite adicional. © 2007 Marco Fagundes - [email protected] 9 Sobrecarga (Overload) de Construtores class ContaCorrente{ Overload de construtores private String numero; private float saldo; ContaCorrente (){}// construtor padrão ContaCorrente(String pNumero, String pSaldo){ this.nome = pNumero; this.saldo = pSaldo; } }} class TestaConta{ public static void main(String[] args){ ContaCorrente c1 = new ContaCorrente(); ContaCorrente c2 = new ContaCorrente(“cc01”, 100.0); exibir dados do c1 e c2... } } © 2007 Marco Fagundes - [email protected] 10 Pontos Principais Overload permite criar vários métodos com o mesmo nome Os seguintes elementos da assinatura método são considerado para overload: tipo dos parâmetros + número de parâmetros Tipo de retorno não é considerado para overload © 2007 Marco Fagundes - [email protected] 11 Leitura Recomendada Tutorial Sun: Learning the Java Language Lesson: Object-Oriented Programming Concepts http://java.sun.com/docs/books/tutorial/java/concepts/ index.html Lesson: Classes and Objects http://java.sun.com/docs/books/tutorial/java/javaOO/i ndex.html © 2007 Marco Fagundes - [email protected] 12