JF 7 5 Solution Esp
JF 7 5 Solution Esp
com
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
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...
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() {
}
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.