70 likes | 271 Views
Ejercicios. Una variable polimórfica puede referenciar a objetos de diferentes clases. En Java, si una variable x se declara de clase A puede referenciar a objetos de esa clase, pero también a objetos de la clase B , C o D. A. B. D. C.
E N D
Ejercicios Una variable polimórfica puede referenciar a objetos de diferentes clases. En Java, si una variable x se declara de clase A puede referenciar a objetos de esa clase, pero también a objetos de la clase B, C o D. A B D C Si el tipo estático de una entidad es A, los tipos dinámicos pueden ser B, C y D Introducción a la Programación Orientada a Objetos
Ejercicios Una asignación polimórfica asocia una referencia a un objeto de una clase derivada, a una variable declarada de una clase ancestro. Dadas las siguiente declaraciones: En Java son válidas las siguientes asignaciones polimórficas: A xa; B xb; C xc; D xd; xa = xb; xa = xc; xa = xd; xb = xc; xb = xd; xc = xd; Introducción a la Programación Orientada a Objetos
Ejercicios El chequeo de tipos en compilación establece restricciones sobre las asignaciones polimórficas. Dadas las declaraciones: En Java, NO son válidas las siguientes asignaciones: A xa; B xb; C xc; D xd; xb = xa; xc = xa; xc = xb; xd = xc; xd = xb; xd = xa; Introducción a la Programación Orientada a Objetos
Ejercicios class A { public boolean p (int x) {…} } class B extends A { public boolean p (int x) {…} public int r (int x) {…} } A xa; B xb = new B(); xa = xb; xa.p(0); La ligadura se establece con el método p de la clase B, p está redefinido xa.r(0); NO ES VALIDO, r no estádefinido en A Introducción a la Programación Orientada a Objetos
Ejercicios class A { public boolean q (double x) {…} } class B extends A { public boolean q (String x) {…} } A xa; B xb = new B(); xa = xb; xa.q(0); La ligadura se establece con el método q de la clase A, q está sobrecargado Introducción a la Programación Orientada a Objetos
Ejercicios Los objetos referenciados por variables de la clase A sólo podrán recibir los mensajes que corresponden al comportamiento de la clase A. Sin embargo, si una variable declarada de clase A referencia a un objeto de clase B y recibe un mensaje que corresponde a un método redefinido en B, la ligadura se establece con el método redefinido. La variable determina los mensajes que un objeto puede recibir, pero el objeto determina la implementación específica del comportamiento que se ejecuta en respuesta a los mensajes. Introducción a la Programación Orientada a Objetos