Looking for PROGRAMACIÓN 3 (34012) test answers and solutions? Browse our comprehensive collection of verified answers for PROGRAMACIÓN 3 (34012) at moodle2026-27.ua.es.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
En Java, una clase abstracta tiene que tener al menos un método abstracto
Emplearemos los interfaces para asegurarnos que una clase implementa, como mínimo, unos métodos concretos. En el caso de que una clase implemente una interfaz y no sobreescriba los métodos definidos en ésta, la clase deberá ser obligatoriamente abstracta.
En Java, los métodos de las interfaces son públicos por defecto.
En Java no existe ningún tipo de herencia múltiple, en C++ sí
En Java (versiones anteriores a Java 8), un interfaz no puede incluir atributos de instancia y sólo puede contener declaraciones de métodos públicos sin implementación y declaraciones de constantes estáticas.
Para cumplir el principio de sustitución de Liskov, siendo 'B' una subclase de 'A', en el siguiente caso
A ref = new B();
para que no se invoque un método de A que B no implementa, debemos sustituir la variable por un downcasting:
B ref2 = (B) ref;
y usar 'ref2' en vez de 'ref'.
Los compiladores han de determinar el tipo de cada expresión de un programa y generar código para realizar las conversiones de tipo oportunas porque, entre otras cosas, el lenguaje objeto suele requerir instrucciones diferentes para operar con los datos en función de su tipo.
Dado este código:
public class Animal {
public void come() {
System.out.println("Animal, ¡come!");
}
}
public class Serpiente extends Animal {
public void come() {
System.out.println("Serpiente, ¡come!");
}
public void repta() {
System.out.println("¡Repta!");
}
}
public class Ave extends Animal {
public void mudaPlumas() {
System.out.println("Ave, ¡muda las plumas!");
}
public void come() {
System.out.println("Ave, ¡come!");
}
}
public class AveVoladora extends Ave {
public void vuela() {
System.out.println("¡Vuela!");
}
}
public class Pinguino extends Ave {
public void come() {
System.out.println("Pingüino, ¡come!");
}
}
public class Cliente {
public Animal F(char c) {
Animal animal = null;
switch (c) {
case 'a':
animal = new Ave();
break;
case 'v':
animal = new AveVoladora();
break;
case 'p':
animal = new Pinguino();
break;
case 's':
animal = new Serpiente();
break;
default:
animal = new Animal();
}
return animal;
}
}
Indica la opción correcta
Dado este código:
public class Animal {
public void come() {
System.out.println("Animal, ¡come!");
}
}
public class Serpiente extends Animal {
public void come() {
System.out.println("Serpiente, ¡come!");
}
public void repta() {
System.out.println("¡Repta!");
}
}
public class Ave extends Animal {
public void mudaPlumas() {
System.out.println("Ave, ¡muda las plumas!");
}
public void come() {
System.out.println("Ave, ¡come!");
}
}
public class AveVoladora extends Ave {
public void vuela() {
System.out.println("¡Vuela!");
}
}
public class Pinguino extends Ave {
public void come() {
System.out.println("Pingüino, ¡come!");
}
}
public class Main {
public void F(char c) {
Animal animal = null;
switch (c) {
case 'a':
animal = new Ave();
break;
case 'v':
animal = new AveVoladora();
break;
case 's':
animal = new Serpiente();
break;
case 'p':
animal = new Pinguino();
break;
default:
animal = new Animal();
}
animal.come();
}
}
Indica lo que se imprime por pantalla al llamar al método F(char c) dadas las siguientes opciones
Indica en que fase del proceso de compilación se realiza la comprobación de tipos.