UTFPR Campus Curitiba DAELN Cursos de Eng EletrnicaEng
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF 62 C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof. a Tânia Preto / Prof. Robinson Vida
Overloading X Overriding (i/iv) São formas diferentes de manipular um mesmo método; Override: ◦ É a sobrescrita de método; ◦ Ocorre no processo de herança, onde um método declarado e implementado na classe pai, pode ser redefinido na classe filha; ◦ Métodos marcados como final, private ou static não são herdados e por este motivo não podem ser sobrescritos; ◦ Outro ponto importante é que os métodos sobrescritos não podem declarar um modificador de acesso mais restritivo do que foi sobrescrito. Ex. : se na classe pai um método é protected (pode ser acessado fora do pacote ao ser herdado), na classe filha o respectivo método sobrescrito não pode ser default (acessado só no pacote) ou muito menos private (acessado só na classe);
Overloading X Overriding (ii/iv) Override – Exemplo 1 - Java: class Musician { // classe pai public int years. Of. Struggle; public void play(int how. Long) { //metodo. . . } public void starve() { //metodo. . . } } class Pianist extends Musician { //classe filha // override (sobrescrita) do método play public void play(int how. Long) {. . . } }
Overloading X Overriding (ii/iv) Override – Exemplo 2 - C++: class Base { public: virtual void Do. Something( ) { x = x + 5; } private: int x; }; class Derived : public Base { public: virtual void Do. Something( ) { //sobreescreve o anterior y = y + 5; //acrescenta comando Base: : Do. Something(); // invoca método da classe base } private: int y; };
Overloading X Overriding (ii/iv) Overload: ◦ É a sobrecarga de método; ◦ Os métodos sobrecarregados contém o mesmo nome, mas com tipos de parâmetros e/ou retornos diferentes; ◦ Não é o mesmo método (pois varia nos parâmetros e/ou retorno) e não sobrescreve o método pai; ◦ Métodos sobrecarregados podem ser usados na mesma classe ou subclasse, oferecendo mais opções aos usuários; ◦ Soluções mais elegantes podem ser obtidas a partir do uso de sobrecarga conforme mostra o exemplo 1; ◦ Construtor pode ser usado dentro de construtor na definição de novos métodos sobrecarregados, conforme exemplo 2;
Overloading X Overriding (ii/iv) Overload - Exemplo 1 java - - Sobrecarga oferecendo nova solução: Seja uma implementação de métodos para mostrar na tela diferentes tipos de dados: public class Data. Show {. . . public void show. String(String s) {. . . } public void show. Int(int i) {. . . } public void show. Double(double f) {. . . } public void show. Int. Double(int i, double f) {. . . } } // Neste exemplo foi usado um método diferente para cada tipo.
Overloading X Overriding (ii/iv) Overload - Exemplo 1 - cont. - Implementação reescrita usando o conceito de overload: public class Data. Show {. . . public void show(String s) {. . . } public void show(int i) {. . . } public void show(double f) {. . . } public void show(int i, double f) {. . . } }
Overloading X Overriding (ii/iv) Overload - Exemplo 2 – Java - Sobrecarga de método construtor public class A { public A(int x, float y) { //construtor 1 this(y); // usa construtor 2. . . } public A(float x) { // construtor 2 this((int)x, x); // usa construtor 1. . . } }
Overloading X Overriding (ii/iv) Overload - Exemplo 3 – C++ Sobrecarga public class Test { public static void calcular(int x, int y){ System. out. println(“dois numeros: ” + (x+ y)); } public static void calcular(int x, int y, int z){ System. out. println(“tres numeros: ” + (x+ y+ z)); } public static void main(String [] args){ int a = 10; int b = 20; int c = 30; calcular(b, c); // mostra: dois numeros: 50 calcular(b, c, a); // mostra: tres numeros: 60 } }
- Slides: 9