100% encontró este documento útil (1 voto)
353 vistas

JF 7 5 Solution Esp

Cargado por

Tutor Campos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
353 vistas

JF 7 5 Solution Esp

Cargado por

Tutor Campos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

academy.oracle.

com

Conceptos fundamentales de Java


7-5: Polimorfismo
Soluciones a las prácticas
Vocabulario:

Identifique el término correspondiente a cada una de las siguientes definiciones.

Polimorfismo Un concepto en la programación orientada por objetos que les permite a las clases tener
varias formas y comportarse como sus superclases.
Sobrescribir métodos Implementar métodos en una subclase que tiene el mismo prototipo (los mismos parámet-
ros, nombre de método, y tipo de retorno) que otro método en la superclase.
final Una palabra clave en Java usada para limitar las subclases a partir de la extensión de una
clase, sobrescribiendo métodos o cambiando datos.
Inmutable Una propiedad de una case estática que hace que la clase no pueda ser extendida o que
sus datos sean cambiados.
Sobrecarga de métodos Implementar un método con el mismo nombre que otro método en la misma clase que tiene
diferentes parámetros o un tipo de retorno diferente.
Enlace dinámico El proceso por el cual Java es capaz de determinar qué método invocar cuando los métodos
han sido sobrescritos.
Abstract Una palabra clave en Java que permite que las clases sean extendidas, pero las clases no
pueden ser instanciadas (construidas)y cuando se aplican los métodos, se indica que los
métodos deberían ser implementados en todas las subclases de la clase.

Inténtelo/Resuélvalo

1. ¿Cuál sería el resultado del siguiente código?


class A
{
void callthis() {
System.out.println(“Inside Class A's Method!”);
}
}

class B extends A
{
void callthis() {
System.out.println(“Inside Class B's Method!”);
}
}

class C extends A{
void callthis() {
System.out.println(“Inside Class C's Method!”);

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus afiliadas. Otros nombres pueden ser
marcas comerciales de sus respectivos dueños.
}
}

class DynamicDispatch {
public static void main(String args[]) {
A a = new A();
B b = new B();
C c = new C();
A ref;

ref = b;
ref.callthis();

ref = c;
ref.callthis();

ref = a;
ref.callthis();
}
}

Respuesta:
¡Dentro del método de la clase B!
¡Dentro del método de la clase C!
¡Dentro del método de la clase A!

2. ¿Cuál es la diferencia entre una clase abstract y una interfaz? ¿Cuándo es apropiado el uso de una clase abstract
o una interfaz?
Las respuestas pueden variar.
Respuesta de ejemplo: Tanto una clase abstract como una interfaz no pueden ser instanciadas, pero las
clases abstract pueden contener métodos y constructores implementados o parcialmente implementados
además de los datos. Las interfaces solo dictan qué métodos debería incluir una clase. Las clases abstract
pueden indicar qué métodos deberían implementarse en estas subclases si los métodos son declarados
como abstract. Las clases abstract son mejor utilizados cuando un programador desea implementar los
mismos métodos a lo largo de diferentes subclases o cuando los campos de datos necesitan ser incluidos
en varias clases, así como para obligar a las subclases a incluir ciertos métodos incluyendo los métodos
abstract. Las interfaces son mejor utilizadas cuando no necesitan ser implementados ni datos ni métodos
con el mismo código a lo largo de las clases, pero los métodos deberían ser incluidos.

3. Dada la siguiente información, determine si resultará: “siempre compila”, “a veces compila”, “no compila”.
public interface A
public class B implements A
public abstract class C
public class D extends C
public class E extends B
Cada clase ha sido inicializada, pero no queda claro para qué han sido inicializadas:
A. a = new...
B. b = new...

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus afiliadas. Otros nombres pueden ser
marcas comerciales de sus respectivos dueños.
C. c = new...
D. d = new...
E. e = new...

Se incluyen los siguientes métodos:


interfaz A especifica method void methodA()
clase C tiene el abstract method void methodC()

Código: ¿Siempre compila, a veces compila, no compila?


a = new B(); Siempre compila
d = new C(); No compila
b.methodA(); Siempre compila
e.methodA(); Siempre compila
c = new C(); No compila
(D)c.methodC(); A veces compila.

4. Sobrescribir el método toString() para la clase más abajo para generar los resultados, haciendo coincidir con el
resultado dado. El método toString() debería imprimir todos los valores desde 1 al número especificado en num y
luego imprimir el valor final usando el método getFactorial provisto.
Suponga que el num int variable es un valor global público:
“Factorial: 10! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 3628800”

int getFactorial(){
int factorial;
for(i = num; num > 0; i--){
factorial *= num;
}
return factorial;
}
public String toString() {
}

String returnString = “Factorial: “ + num + “! = “;


for(int i = 1; i<num; i++) {
returnString = returnString + i + “ * “;
}
returnString = returnString + i + “ = “ getFactorial();
return returnString;

Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus afiliadas. Otros nombres pueden ser
marcas comerciales de sus respectivos dueños.

También podría gustarte