SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Programação Orientada a Objetos



     Sobrecarga e Sobreposição
            de Métodos



          Ludimila Monjardim Casagrande
                      2012
Sobrecarga de Métodos

     A sobrecarga de métodos, também conhecida
         como overloading, ocorre quando criamos dois
         ou mais métodos com o mesmo nome mas com
         uma lista de argumentos diferente.
     A sobrecarga está sendo aplicada, por exemplo,
         quando são declarados dois construtores para
         uma mesma classe, sendo um sem parâmetros
         e outro com parâmetros.



Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   2
Exemplo de Sobrecarga de Construtor
   public class Conta {
       private double saldo;
       public Conta () {
       }
       public Conta (double saldo) {
         this.saldo = saldo;
       }
   }

   Podemos, então, criar objetos dessa classe de dois modos:
   Conta c = new Conta(); ou
   Conta c = new Conta(100);  inicializando o saldo com algum valor


Sobrecarga e Sobreposição      ©2012 Ludimila Monjardim Casagrande     3
Sobrecarga de Métodos

     A sobrecarga também é aplicada para os outros
         métodos que não sejam construtores.
     Em algumas situações, é útil poder executar um
         método em uma classe passando mais ou
         menos argumentos, conforme a necessidade.
     Também pode ser necessário fazer a
         sobrecarga de um mesmo método, com o
         mesmo número de argumentos, porém variando
         os tipos desses argumentos.

Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   4
Exemplo de Sobrecarga de Método
   public class Conta {
     private double saldo;
     public String toString() {
        return " saldo = " + this.saldo;
     }
     public String toString(String prefixo) {
        return prefixo + ": " + toString();
     }
   }

   Exemplo de uso:
   Conta c = new Conta(100);
   c.toString(); ou
   c.toString(“Conta número X”);

Sobrecarga e Sobreposição     ©2012 Ludimila Monjardim Casagrande   5
Sobrecarga de Métodos

     Para que seja permitida a sobrecarga, os nomes
         dos métodos devem ser iguais mas as
         assinaturas devem ser diferentes.

     Duas assinaturas idênticas não são permitidas.
     A assinatura de um método é composta por seu
         nome e pelo número e tipos de argumentos que
         são passados para esse método,
         independentemente dos nomes das variáveis
         usadas na declaração do método.
Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   6
Exemplo
 public class Data {
     private int dia;
     private int mes;
     private int ano;
     public Data(int dia, int mes, int ano) {          Como todos os argumentos são do
       this.dia = dia;                                 mesmo tipo, somente a inversão do
                                                       nome das variáveis não é suficiente
       this.mes = mes;
                                                       para que esses dois construtores
       this.ano = ano;                                 sejam considerados diferentes.
     }
     public Data(int mes, int dia, int ano) {
       this.dia = dia;                                 Esse código, portanto, geraria um
       this.mes = mes;                                 erro de compilação “método
                                                       duplicado na classe Data”.
       this.ano = ano;
     }
 }
Sobrecarga e Sobreposição        ©2012 Ludimila Monjardim Casagrande                         7
Sobrecarga de Métodos

     O tipo de retorno do método não é considerado
         parte da assinatura.
     Sendo assim, não podemos ter dois métodos
         com o mesmo nome e com o mesmo número e
         tipos de argumentos, mas apenas com o tipo de
         retorno diferente.




Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   8
Exemplo

     Na classe Data declarada anteriormente não seria
         possível a declaração dos dois métodos abaixo, pois
         suas assinaturas são idênticas, eles só diferem quanto
         ao tipo de retorno, que não é considerado parte da
         assinatura do método:
             public String getData( ) {           public Date getData( ) {
               return toString( );                      Date d = new Date( );
             }                                          d.setDate(dia);
                                                        d.setMonth(mes);
                                                        d.setYear(ano);
                                                        return d;
                                                    }
Sobrecarga e Sobreposição       ©2012 Ludimila Monjardim Casagrande             9
Sobrecarga de Métodos

     A decisão sobre qual método será chamado quando
         existirem dois ou mais métodos com o mesmo nome
         será feita pelo compilador, que verificará se os tipos
         passados como argumentos casam com alguma das
         assinaturas daquele método.
     Supondo que os argumentos sejam de tipos diferentes,
         a ordem em que aparecem também é relevante, isto é:
           public Data(int dia, String mes, long ano) 
           public Data(String mes, int dia, long ano)



Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   10
Exemplo
public class Data{                                   public static void main(String[] args){
  private int dia;
                                                            Data d1 = new Data(1, “maio", 2004);
  private String mes;
  private long ano;                                         Data d2 = new Data(“maio", 1, 2004);
  public Data(int dia, String mes, long ano){               System.out.println(d1);
    this.dia = dia;
                                                            System.out.println(d2);
    this.mes = mes;
    this.ano = ano;                                     }
  }                                                 }
  public Data(String mes, int dia, long ano){
    this.dia = dia;
    this.mes = mes;                                         Exemplo de sobrecarga válida.
    this.ano = ano;
  }
  public String toString(){
    return dia + " de " + mes + " de " + ano;
  }
Sobrecarga e Sobreposição      ©2012 Ludimila Monjardim Casagrande                             11
Sobrecarga de Métodos

     Ao verificar se há casamento entre os
         argumentos passados e as assinaturas dos
         métodos, o compilador considera todas as
         possibilidades de conversões implícitas.
     Sendo assim, se o valor do argumento passado
         for, por exemplo, do tipo char e o argumento
         declarado na assinatura do método é do tipo int,
         então, esse valor passado será aceito, pois é
         possível fazer uma conversão implícita de char
         para int.

Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   12
Conversões Implícitas Válidas

     As conversões implícitas válidas entre os tipos
         primitivos do Java são:



                        char
                                      int                long          float   double
     byte              short


                  Os elementos á direita da seta recebem os elementos à esquerda.




Sobrecarga e Sobreposição        ©2012 Ludimila Monjardim Casagrande                    13
Outras Conversões Implícitas Válidas

     Conversões implícitas válidas entre classes,
         subclasses, interfaces e sub-interfaces

                              TipoRecebido é uma               TipoRecebido é uma
                                    classe                          interface

                               TipoRecebido deve ser
         TipoReceptor é uma                                    TipoReceptor deve ser
                                  uma subclasse de
               classe                                                 Object
                                    TipoReceptor

                                 TipoRecebido deve             TipoRecebido deve ser
         TipoReceptor é uma
                                    implementar a               uma sub-interface de
              interface        interface TipoReceptor               TipoReceptor



Sobrecarga e Sobreposição     ©2012 Ludimila Monjardim Casagrande                      14
Tipos para o Exemplo
   public interface Figura {
        public double calcularArea( ) ;
   }

   public class Quadrado extends Object implements Figura {
        double lado;
        public Quadrado(double lado) {
            this.lado = lado;
        }

          public double calcularArea( ) {
             double area = 0;
             area = lado * lado;
             return area;
          }
   }

Sobrecarga e Sobreposição       ©2012 Ludimila Monjardim Casagrande   15
Exemplo de Conversões Implícitas
 public class Principal {
     public static void main(String[ ] args) {
             /* A variável o do tipo Object recebe qualquer objeto
              * que seja de um tipo que estenda Object */
             Object o = new Quadrado(4);

             /* A variável f do tipo Figura (que é uma interface)
              * recebe qualquer objeto que seja de um tipo que
              * implemente Figura */
             Figura f = new Quadrado(2);

             /* Uma variável do tipo Object recebe qualquer
              * variável cujo tipo seja uma interface */
             Object o1 = f;
       }
 }
Sobrecarga e Sobreposição         ©2012 Ludimila Monjardim Casagrande   16
Sobreposição de Métodos

     A sobreposição de métodos (ou overriding)
         ocorre quando há polimorfismo:
                                    Figura                      A implementação do método
                                                                calcularArea() das subclasses
                                                                sobrepõe a implementação
                                 calcularArea()                 do mesmo método na
                                                                superclasse.


                   Quadrado                           Círculo


                calcularArea()                    calcularArea()

Sobrecarga e Sobreposição           ©2012 Ludimila Monjardim Casagrande                         17
Exemplo de Polimorfismo
 public class Figura {
      public double calcularArea( ) {
          return 0;
      }
 }
 public class Quadrado extends Figura {
      double lado;
      public Quadrado(double lado) {
          this.lado = lado;
      }

        public double calcularArea( ) {
           double area = 0;
           area = lado * lado;
           return area;
        }
 }
Sobrecarga e Sobreposição      ©2012 Ludimila Monjardim Casagrande   18
Exemplo de Polimorfismo
  public class Circulo extends Figura {
         double raio;

         public Circulo (double raio) {
            this.raio = raio;
         }

         public double calcularArea( ) {
            double area = 0;
            area = 3.14 * raio * raio;
            return area;
         }
  }



Sobrecarga e Sobreposição      ©2012 Ludimila Monjardim Casagrande   19
Exemplo de Polimorfismo
  public class Main {

      public static void main(String[] args) {

         Figura f1 = new Quadrado(4);

         Figura f2 = new Circulo(2);

         System.out.println("Área da Figura 1 é: "
                            + f1.calcularArea( ) + "n“
                            + "Área da Figura 2 é: "
                            + f2.calcularArea( ));
        }
  }


Sobrecarga e Sobreposição      ©2012 Ludimila Monjardim Casagrande   20
Sobreposição de Métodos

      Existem algumas regras que devem ser
          respeitadas para que a sobreposição seja válida.
      Por exemplo, o método que sobrepõe não deve
          restringir o grau de acessibilidade do método
          sobreposto.

              private       default               protected       public


           um método private pode ser sobreposto por um default
                         e assim sucessivamente

Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande            21
Sobreposição de Métodos

     Para que haja sobreposição, as assinaturas dos
         métodos devem ser idênticas.
     Como o valor de retorno não é considerado parte da
         assinatura, ele pode variar desde que sejam respeitadas
         as regras de conversão entre tipos.
     Exemplo: O método (1) pode sobrescrever o método (2),
         mas o contrário não é verdade:
           public ArrayList teste(ArrayList l) (1)
           public List teste(ArrayList l)                   (2)



Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande    22
Exercícios de Revisão

    1. Para que serve uma interface?
    2. O que é uma classe abstrata?
    3. O que é um método abstrato?
    4. Qual é a diferença entre classes abstratas e
           interfaces?
    5. O que é polimorfismo?
    6. Todos os métodos de uma classe abstrata
           podem ser não abstratos?

Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   23
Exercícios de Revisão

    7. O que significa implementar uma interface? Em
           outras palavras, o que é necessário fazer
           quando uma classe concreta implementa uma
           interface?
    8. Quando uma classe concreta estende uma
           classe abstrata que não contém nenhum
           método abstrato, ela é obrigada a implementar
           algum método? Justifique.
    9. É possível instanciar uma interface? E uma
           classe abstrata?
Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   24
Exercícios de Revisão

    10. Quando uma subclasse implementa um
             método herdado da superclasse, o que está
             acontecendo: overloading ou overriding?
    11. É correto afirmar que uma classe pode
             estender uma interface?
    12. Um interface pode estender outra interface?
             Isto é, há herança entre interfaces?
    13. Há herança múltipla em Java?


Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   25
Bibliografia Sugerida

     Java: Como programar
         Autores: H. M. Deitel e P. J. Deitel
         Editora: Pearson – 6ª Edição

     Complete Java 2 Certification
         Study Guide
         Sybex




Sobrecarga e Sobreposição   ©2012 Ludimila Monjardim Casagrande   26

Mais conteúdo relacionado

Mais procurados

Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em javaManoel Afonso
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Java: Composicao e Array List
Java: Composicao e Array ListJava: Composicao e Array List
Java: Composicao e Array ListArthur Emanuel
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 

Mais procurados (20)

Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Polimorfismo em java
Polimorfismo em javaPolimorfismo em java
Polimorfismo em java
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Java: Composicao e Array List
Java: Composicao e Array ListJava: Composicao e Array List
Java: Composicao e Array List
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 

Destaque

Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 
Cuidador Domiciliar e Sobrecarga
Cuidador Domiciliar e SobrecargaCuidador Domiciliar e Sobrecarga
Cuidador Domiciliar e Sobrecargaadonems
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...Marcello Thiry
 
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfaceFelipe J. R. Vieira
 
3 unidade eng economica
3 unidade eng economica3 unidade eng economica
3 unidade eng economicaMoises Souza
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herançaIvan Ricarte
 
Introdução à programação em Android e iOS - OOP Java
Introdução à programação em Android e iOS - OOP JavaIntrodução à programação em Android e iOS - OOP Java
Introdução à programação em Android e iOS - OOP JavaLuís Gustavo Martins
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)jose-junior89
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)Marcello Thiry
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoRegis Magalhães
 
Camada De Aplicação
Camada De AplicaçãoCamada De Aplicação
Camada De AplicaçãoLyous
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003elliando dias
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClasseFelipe J. R. Vieira
 
Logica fuzzy Conceitos e Aplicações
Logica fuzzy   Conceitos e AplicaçõesLogica fuzzy   Conceitos e Aplicações
Logica fuzzy Conceitos e AplicaçõesToni Esteves
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo javaFAFICA
 
Modelagem de dados (35 horas)
Modelagem de dados (35 horas)Modelagem de dados (35 horas)
Modelagem de dados (35 horas)Vitor Savicki
 

Destaque (20)

Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 
Cuidador Domiciliar e Sobrecarga
Cuidador Domiciliar e SobrecargaCuidador Domiciliar e Sobrecarga
Cuidador Domiciliar e Sobrecarga
 
C++ Sobrecarga
C++ SobrecargaC++ Sobrecarga
C++ Sobrecarga
 
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...
 
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
 
3 unidade eng economica
3 unidade eng economica3 unidade eng economica
3 unidade eng economica
 
Programação orientada a objetos: herança
Programação orientada a objetos: herançaProgramação orientada a objetos: herança
Programação orientada a objetos: herança
 
Introdução à programação em Android e iOS - OOP Java
Introdução à programação em Android e iOS - OOP JavaIntrodução à programação em Android e iOS - OOP Java
Introdução à programação em Android e iOS - OOP Java
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)
 
Camada 7 do modelo OSI
Camada 7 do modelo OSICamada 7 do modelo OSI
Camada 7 do modelo OSI
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita Polimorfismo
 
Camada De Aplicação
Camada De AplicaçãoCamada De Aplicação
Camada De Aplicação
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
POO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de ClassePOO - Aula 07 - Construtores e Atributos de Classe
POO - Aula 07 - Construtores e Atributos de Classe
 
Logica fuzzy Conceitos e Aplicações
Logica fuzzy   Conceitos e AplicaçõesLogica fuzzy   Conceitos e Aplicações
Logica fuzzy Conceitos e Aplicações
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Modelagem de dados (35 horas)
Modelagem de dados (35 horas)Modelagem de dados (35 horas)
Modelagem de dados (35 horas)
 

Semelhante a POO Métodos Sobrecarga

Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosAdriano Teixeira de Souza
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Professor Samuel Ribeiro
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10PeslPinguim
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Carlos Alberto
 
Construtores_Sobrecarga.pptx
Construtores_Sobrecarga.pptxConstrutores_Sobrecarga.pptx
Construtores_Sobrecarga.pptxJoberthSilva
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em JavaSidney Roberto
 

Semelhante a POO Métodos Sobrecarga (20)

Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Refactoring
RefactoringRefactoring
Refactoring
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
10 heranca
10   heranca10   heranca
10 heranca
 
Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)Programação Orientada a Objeto(POO)
Programação Orientada a Objeto(POO)
 
Final e aastract
Final e aastractFinal e aastract
Final e aastract
 
Construtores_Sobrecarga.pptx
Construtores_Sobrecarga.pptxConstrutores_Sobrecarga.pptx
Construtores_Sobrecarga.pptx
 
Java 06
Java 06Java 06
Java 06
 
Manipulação de Datas em Java
Manipulação de Datas em JavaManipulação de Datas em Java
Manipulação de Datas em Java
 

Mais de Ludimila Monjardim Casagrande

Mais de Ludimila Monjardim Casagrande (15)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 

POO Métodos Sobrecarga

  • 1. Programação Orientada a Objetos Sobrecarga e Sobreposição de Métodos Ludimila Monjardim Casagrande 2012
  • 2. Sobrecarga de Métodos  A sobrecarga de métodos, também conhecida como overloading, ocorre quando criamos dois ou mais métodos com o mesmo nome mas com uma lista de argumentos diferente.  A sobrecarga está sendo aplicada, por exemplo, quando são declarados dois construtores para uma mesma classe, sendo um sem parâmetros e outro com parâmetros. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 2
  • 3. Exemplo de Sobrecarga de Construtor public class Conta { private double saldo; public Conta () { } public Conta (double saldo) { this.saldo = saldo; } } Podemos, então, criar objetos dessa classe de dois modos: Conta c = new Conta(); ou Conta c = new Conta(100);  inicializando o saldo com algum valor Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 3
  • 4. Sobrecarga de Métodos  A sobrecarga também é aplicada para os outros métodos que não sejam construtores.  Em algumas situações, é útil poder executar um método em uma classe passando mais ou menos argumentos, conforme a necessidade.  Também pode ser necessário fazer a sobrecarga de um mesmo método, com o mesmo número de argumentos, porém variando os tipos desses argumentos. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 4
  • 5. Exemplo de Sobrecarga de Método public class Conta { private double saldo; public String toString() { return " saldo = " + this.saldo; } public String toString(String prefixo) { return prefixo + ": " + toString(); } } Exemplo de uso: Conta c = new Conta(100); c.toString(); ou c.toString(“Conta número X”); Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 5
  • 6. Sobrecarga de Métodos  Para que seja permitida a sobrecarga, os nomes dos métodos devem ser iguais mas as assinaturas devem ser diferentes.  Duas assinaturas idênticas não são permitidas.  A assinatura de um método é composta por seu nome e pelo número e tipos de argumentos que são passados para esse método, independentemente dos nomes das variáveis usadas na declaração do método. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 6
  • 7. Exemplo public class Data { private int dia; private int mes; private int ano; public Data(int dia, int mes, int ano) { Como todos os argumentos são do this.dia = dia; mesmo tipo, somente a inversão do nome das variáveis não é suficiente this.mes = mes; para que esses dois construtores this.ano = ano; sejam considerados diferentes. } public Data(int mes, int dia, int ano) { this.dia = dia; Esse código, portanto, geraria um this.mes = mes; erro de compilação “método duplicado na classe Data”. this.ano = ano; } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 7
  • 8. Sobrecarga de Métodos  O tipo de retorno do método não é considerado parte da assinatura.  Sendo assim, não podemos ter dois métodos com o mesmo nome e com o mesmo número e tipos de argumentos, mas apenas com o tipo de retorno diferente. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 8
  • 9. Exemplo  Na classe Data declarada anteriormente não seria possível a declaração dos dois métodos abaixo, pois suas assinaturas são idênticas, eles só diferem quanto ao tipo de retorno, que não é considerado parte da assinatura do método: public String getData( ) { public Date getData( ) { return toString( ); Date d = new Date( ); } d.setDate(dia); d.setMonth(mes); d.setYear(ano); return d; } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 9
  • 10. Sobrecarga de Métodos  A decisão sobre qual método será chamado quando existirem dois ou mais métodos com o mesmo nome será feita pelo compilador, que verificará se os tipos passados como argumentos casam com alguma das assinaturas daquele método.  Supondo que os argumentos sejam de tipos diferentes, a ordem em que aparecem também é relevante, isto é:  public Data(int dia, String mes, long ano)   public Data(String mes, int dia, long ano) Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 10
  • 11. Exemplo public class Data{ public static void main(String[] args){ private int dia; Data d1 = new Data(1, “maio", 2004); private String mes; private long ano; Data d2 = new Data(“maio", 1, 2004); public Data(int dia, String mes, long ano){ System.out.println(d1); this.dia = dia; System.out.println(d2); this.mes = mes; this.ano = ano; } } } public Data(String mes, int dia, long ano){ this.dia = dia; this.mes = mes; Exemplo de sobrecarga válida. this.ano = ano; } public String toString(){ return dia + " de " + mes + " de " + ano; } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 11
  • 12. Sobrecarga de Métodos  Ao verificar se há casamento entre os argumentos passados e as assinaturas dos métodos, o compilador considera todas as possibilidades de conversões implícitas.  Sendo assim, se o valor do argumento passado for, por exemplo, do tipo char e o argumento declarado na assinatura do método é do tipo int, então, esse valor passado será aceito, pois é possível fazer uma conversão implícita de char para int. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 12
  • 13. Conversões Implícitas Válidas  As conversões implícitas válidas entre os tipos primitivos do Java são: char int long float double byte short Os elementos á direita da seta recebem os elementos à esquerda. Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 13
  • 14. Outras Conversões Implícitas Válidas  Conversões implícitas válidas entre classes, subclasses, interfaces e sub-interfaces TipoRecebido é uma TipoRecebido é uma classe interface TipoRecebido deve ser TipoReceptor é uma TipoReceptor deve ser uma subclasse de classe Object TipoReceptor TipoRecebido deve TipoRecebido deve ser TipoReceptor é uma implementar a uma sub-interface de interface interface TipoReceptor TipoReceptor Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 14
  • 15. Tipos para o Exemplo public interface Figura { public double calcularArea( ) ; } public class Quadrado extends Object implements Figura { double lado; public Quadrado(double lado) { this.lado = lado; } public double calcularArea( ) { double area = 0; area = lado * lado; return area; } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 15
  • 16. Exemplo de Conversões Implícitas public class Principal { public static void main(String[ ] args) { /* A variável o do tipo Object recebe qualquer objeto * que seja de um tipo que estenda Object */ Object o = new Quadrado(4); /* A variável f do tipo Figura (que é uma interface) * recebe qualquer objeto que seja de um tipo que * implemente Figura */ Figura f = new Quadrado(2); /* Uma variável do tipo Object recebe qualquer * variável cujo tipo seja uma interface */ Object o1 = f; } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 16
  • 17. Sobreposição de Métodos  A sobreposição de métodos (ou overriding) ocorre quando há polimorfismo: Figura A implementação do método calcularArea() das subclasses sobrepõe a implementação calcularArea() do mesmo método na superclasse. Quadrado Círculo calcularArea() calcularArea() Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 17
  • 18. Exemplo de Polimorfismo public class Figura { public double calcularArea( ) { return 0; } } public class Quadrado extends Figura { double lado; public Quadrado(double lado) { this.lado = lado; } public double calcularArea( ) { double area = 0; area = lado * lado; return area; } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 18
  • 19. Exemplo de Polimorfismo public class Circulo extends Figura { double raio; public Circulo (double raio) { this.raio = raio; } public double calcularArea( ) { double area = 0; area = 3.14 * raio * raio; return area; } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 19
  • 20. Exemplo de Polimorfismo public class Main { public static void main(String[] args) { Figura f1 = new Quadrado(4); Figura f2 = new Circulo(2); System.out.println("Área da Figura 1 é: " + f1.calcularArea( ) + "n“ + "Área da Figura 2 é: " + f2.calcularArea( )); } } Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 20
  • 21. Sobreposição de Métodos  Existem algumas regras que devem ser respeitadas para que a sobreposição seja válida.  Por exemplo, o método que sobrepõe não deve restringir o grau de acessibilidade do método sobreposto. private default protected public um método private pode ser sobreposto por um default e assim sucessivamente Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 21
  • 22. Sobreposição de Métodos  Para que haja sobreposição, as assinaturas dos métodos devem ser idênticas.  Como o valor de retorno não é considerado parte da assinatura, ele pode variar desde que sejam respeitadas as regras de conversão entre tipos.  Exemplo: O método (1) pode sobrescrever o método (2), mas o contrário não é verdade:  public ArrayList teste(ArrayList l) (1)  public List teste(ArrayList l) (2) Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 22
  • 23. Exercícios de Revisão 1. Para que serve uma interface? 2. O que é uma classe abstrata? 3. O que é um método abstrato? 4. Qual é a diferença entre classes abstratas e interfaces? 5. O que é polimorfismo? 6. Todos os métodos de uma classe abstrata podem ser não abstratos? Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 23
  • 24. Exercícios de Revisão 7. O que significa implementar uma interface? Em outras palavras, o que é necessário fazer quando uma classe concreta implementa uma interface? 8. Quando uma classe concreta estende uma classe abstrata que não contém nenhum método abstrato, ela é obrigada a implementar algum método? Justifique. 9. É possível instanciar uma interface? E uma classe abstrata? Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 24
  • 25. Exercícios de Revisão 10. Quando uma subclasse implementa um método herdado da superclasse, o que está acontecendo: overloading ou overriding? 11. É correto afirmar que uma classe pode estender uma interface? 12. Um interface pode estender outra interface? Isto é, há herança entre interfaces? 13. Há herança múltipla em Java? Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 25
  • 26. Bibliografia Sugerida  Java: Como programar Autores: H. M. Deitel e P. J. Deitel Editora: Pearson – 6ª Edição  Complete Java 2 Certification Study Guide Sybex Sobrecarga e Sobreposição ©2012 Ludimila Monjardim Casagrande 26