Title | Polimorfisme |
---|---|
Course | Programación Orientada a Objetos |
Institution | Universitat Politècnica de Catalunya |
Pages | 3 |
File Size | 123.7 KB |
File Type | |
Total Downloads | 9 |
Total Views | 158 |
Download Polimorfisme PDF
POO
Mar Vidal
Polimorfisme
Herència:
Filla2 f = new Filla2();
Mare
f.cantar(); f.dibuixar();
+dibuixar()
Filla1
Filla2
+dibuixar() +jugar()
+dibuixar() +cantar()
Mare m = new Filla2(); m.dibuixar(); m.cantar(); //Error de compilació!
Mare m = new Filla2();
Mare
Filla2 f = (Filla2) m; +dibuixar() f.cantar();
Class Casting Filla1 g = (Filla1) m; Filla1
Filla2
+dibuixar() +jugar()
+dibuixar() +cantar()
g.jugar(); /*Error: m és Filla2 no Filla 1 */
Mare Mare m = new Filla2(); Filla2 f = new Filla2();
+dibuixar()
Filla1
Filla2
+dibuixar()
+dibuixar()
m.dibuixar(); f.dibuixar();
POO
Mar Vidal
Taula comparativa class
abstract class
interface
Conté Atributs i Codi
Sí
Sí
No Només constants
Es poden crear referències del seu tipus
Sí
Sí
Sí
Es pot instanciar
Sí
No
No
Herència/implementació múltiple
No
No
Sí
Obligacions de les subclasses/classes implementadores
Cap
Implementar mètodes abstractes de la superclass
Implementar tots els mètodes de la interface
Classe abstracta Sintaxi
Formada per
public abstract class NomClasse
Atributs Mètodes Algun mètode abstracte public class Subclasse extends ClasseAbstracta
Herència
Mètode abstracte
La subclasse ha d'implementar obligatòriament els mètodes abstractes public abstract tipusRetorn nomMetode (TipusParam nomParam);
No té codi Es poden crear referències del seu tipus: ClasseAbstracta c = new Subclasse();
Atenció
No es pot instanciar: ClasseAbstracta c = new ClasseAbstracta();
No es pot fer herència múltiple
POO
Mar Vidal
Interfícies Sintaxi
Formada per
public interface NomInterface
Constants Mètodes abstractes public class ClasseImpl implements InterfaceF
Implementació
La classe implementadora ha d'implementar tots els mètodes de la interface public tipusRetorn nomMetode (TipusParam nomParam);
Mètode abstracte No té codi Es poden crear referències del seu tipus: InterfaceF f = new ClasseImpl();
No es pot instanciar: Atenció
InterfaceF f = new InterfaceF();
Es pot fer implementació múltiple public class ClasseImpl implements InterfaceF, InterfaceG, InterfaceH
Herència i implementació alhora
public class NomClasse extends SuperClasse implements InterfaceF...