Página Inicial do Fórum > Java Básico

Para que exatamente serve a sobrecarga?



Criar novo tópico   Responder tópico


  1. peshit_
    Posts:1


    Comment Arrow

    Publicado em: 06/10/2011 14:27:17

    Oi boa tarde (:
    Nesse exato momento estou na minha aula de JAVA, e a professora deu uma pergunta para diferenciar polimorfismo de sobrecarga. Mas para isso eu tenho que entender o dois. Ela disse que com a sobrecarga eu uso o mesmo método na mesma classe, e o polimorfismo em classes diferentes. Porém tive uma certa dúvida na sobrecarga. Essa foi minha explicação: Sobrecarga é a criação de vários métodos com o mesmo nome porém com argumentos diferentes. Elas variam entre números, posições e quantidade. Pode-se criar o mesmo método com o mesmo nome, e a passagem de parâmetros ser diferente, como por exemplo:
    O método LIGAR possui três atributos, dois do tipo int, e um tipo boolean. O Java lê somente o tipo e não o nome do atributo, então não se pode criar o método LIGAR duas vezes para passar o mesmo parâmetro int. Mas se for um método LIGAR com argumento inteiro, e outro com argumento boolean, aí sim está correto.

    Sei o que a sobrecarga tem como características, mudar a passagem de parametros e manter o mesmo nome do método. Uso ela também para modificar os valores dos atributos de uma mesma classe. Porém, PARA QUE é usado isso? Qual a vantagem, finalidade?
    Obrigada desde já quem puder me ajudar ;x


    2011-10-07 título editado por simu

    - tudo em letra maiúscula é considerado gritaria...





  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 06/10/2011 18:24:30

    primeiro, isso vai em java básico, movendo....


    Funciona assim:
    digamos que você tem o método somar,

    somar pode receber 2 inteiros e retorna uma String descrevendo a soma no formato

    " + = "

    esse método pode ser descrito assim




    MAS e se, você quisesse ter também, um metodo somar que recebesse dois doubles?, no int, você não iria querer mostrar nenhuma casa decimal, mas com double sim.

    Ser não houvesse sobrecarga, você precisaria usar dois métodos cm nomes diferentes (por exemplo somarInt e somarDouble ) que fariam a mesma coisa.

    deste modo, você pode criar métodos que façam a mesma tarefa, com o mesmo nome, mesmo usando argumentos diferentes




    quando você for usar os métodos, não precisa se preocupar em qual é o nome do método para aquele argumento, já que são todos o mesmo nome





    Claro, você pode achar que não existe necessidade em um caso pequeno como este mas, podia ser pior.


    Pense no System.out.println()

    que tipo de argumento ele recebe?
    Você nunca reparou nisso mas, ele pode receber MUITOS tipos de argumento diferentes.

    System.out é um
    PrintStream, ele tem o método println sobrecarregado em...



    imagina ter que lembrar um nome diferente para cada ocasião, tudo para fazer a mesma coisa: imprimir.

    Com a sobrecarga, fica muito mais simples, você nem percebe que existem tantos métodos, afinal, no fundo, eles fazem a mesma coisa

    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. staroski
    Posts:3412


    Comment Arrow

    Publicado em: 07/10/2011 08:39:51

    Sobrecarga: permite que voce tenha uma mesma operação para diferentes tipos de dado e/ou diferentes argumentos.
    Implementa-se criando num mesmo tipo de dado, métodos com o mesmo nome mas parametros diferentes.

    Polimorfismo: permite que seus objetos assumam papéis diferentes.
    Implementa-se com herança e/ou realização de interfaces.
    _________________
    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC


  1. Comment Arrow

    Publicado em: 07/10/2011 09:46:10

    isso é mais facil de entender com o contrutor!

    você pode ter o contrutor padrão da sua classe.



    que apenas chama o super.

    e como pode ter um contrutor que reba um ou mais dados por parametro.




  1. sekkuar
    Posts:5998


    Comment Arrow

    Publicado em: 06/10/2011 18:24:30

    samirrolemberg
    isso é mais facil de entender com o contrutor!

    você pode ter o contrutor padrão da sua classe.



    que apenas chama o super.

    e como pode ter um contrutor que reba um ou mais dados por parametro.



    Um jeito melhor para ilustrar esse cenário (sem repetir código)




    _________________
    Sekkuar ~ Ex-Catador Executivo do Javafree - (Não mais) Catando os tópico tudo.
    "The mod javafree deserves, but not the one it needs right now."


    Stack Traces existem pra ajudar e não para trazer uma mensagem de satã dizendo que seu computador será destruído.


    Peça seu Código Pronto para o seu Dever de Casa aqui
    You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.




  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico