Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa
TI Expert » Programação » Java » Sobrecarga de métodos

Sobrecarga de métodos

Java nos permite criar vários métodos com o mesmo nome desde que tenham parâmetros diferentes. Isso é o que chamamos de sobrecarga de métodos.

A sobrecarga de métodos consiste em criarmos o mesmo método com possibilidades de entradas diferentes. Essas entradas, caracterizadas como parâmetros, devem sempre ser de tipos diferentes, quantidades de parâmetros diferentes ou posições dos tipos diferentes.

Para visualizarmos um cenário, vejamos a classe abaixo:

public TV {
    int canal;
    int volume;
    boolean ligada;
    int tamanho;
}

Agora, criaremos o método ligar. O método ligar, simplesmente, muda o valor dos atributos canal e volume para 3 e 25, respectivamente.

void ligar (){
    canal = 3;
    volume = 25;
    ligada = true;
}

Agora, vamos personalizar este método para que ele mude o atributo ligada de acordo com o parâmetro.

void ligar (boolean ligada){
    canal = 3;
    volume = 25;
    this.ligada = ligada;
}

Poderíamos utilizar ambos os métodos na mesma classe se quisermos, porque um possui argumentos e o outro não.

void ligar (){
    canal = 3;
    volume = 25;
    ligada = true;
}

void ligar (boolean ligada){
    canal = 3;
    volume = 25;
    this.ligada = ligada;
}

Porém, o mesmo não pode ser aplicado aos atributos canal e volume. Porque não é possível criar um método que recebe um inteiro e criar um outro método com o mesmo nome que também recebe um inteiro, mesmo que estes dois inteiros sejam totalmente diferentes. Se visualizarmos como Java interpreta o método, veríamos:

void ligar (int volume) = void ligar (int canal)
void ligar (int) = void ligar (int)

Por outro lado, é perfeitamente possível criarmos dois métodos que recebam um booleano e um inteiro, inclusive se forem os mesmos, mas em posições diferentes. Isso acontece porque Java não verifica o nome do parâmetro, mas apenas o tipo dele.

void ligar (boolean ligada, int canal) ≠ void ligar (int canal, boolean ligada)
void ligar (boolean, int) ≠ void ligar (int, boolean)

Portanto, podemos fazer muitas combinações desde que essas combinações não sejam em números iguais, de tipos iguais e nas mesmas posições.

Abaixo, está a classe com algumas combinações possíveis. É um bom costume sempre referenciar para o método que recebe mais argumentos.

public class TV {
    int canal;
    int volume;
    boolean ligada;
    int tamanho;

    void ligar() {
        this.ligar(3, 25, true);
    }

    void ligar(boolean ligada) {
        this.ligar(3, 25, ligada);
    }

    void ligar(int canal, int volume) {
        this.ligar(canal, volume, true);
    }

    void ligar(int canal, int volume, boolean ligada) {
        this.canal = canal;
        this.volume = volume;
        this.ligada = ligada;
    }
}

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 82248 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog