Encontré un código y no puedo entender un cierto aspecto de él aunque he realizado una búsqueda exhaustiva.¿Por qué se usan paréntesis alrededor de un nombre de clase en Java?
Mi pregunta es: ¿por qué las clases a veces se declaran entre paréntesis como en el siguiente código?
public class Animal {
public static void hide() {
System.out.println("The hide method in Animal.");
}
public void override() {
System.out.println("The override method in Animal.");
}
}
public class Cat extends Animal {
public static void hide() {
System.out.println("The hide method in Cat.");
}
public void override() {
System.out.println("The override method in Cat.");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = (Animal)myCat;
myAnimal.hide();
myAnimal.override();
}
}
donde mi atención se centra en esta línea de código en particular:
Animal myAnimal = (Animal)myCat;
creo que tiene algo que ver con el hecho de que una clase se extiende otra, pero estoy seguro de lo que la clase definida dentro de paréntesis, significa.
Se agradece cualquier ayuda sobre esto. Gracias de antemano.
Es un tipo encastrado, pero en este caso el encasillado no es necesario, ya que 'Cat' es un subtipo de Animal. Los tipos de difusión son necesarios cuando desea asignar un Súper Tipo a un Sub Tipo, p. Ej. 'Cat cat = (Cat) someAnimal;'. Si haces esto, tendrás que asegurarte de que en la Variable se incluye un 'Gato' o un subtipo de' Gato', p. usando 'instanceof'. De lo contrario, Java lanzará una 'ClassCastException'. –
en este caso particular, ya que Cat extiende a Animal y myAnimal ya es Animal, no necesitas lanzar myCat a Animal. Entonces, Animal myAnimal = myCat; habría funcionado. – Shark
corchetes '[]' - llaves '{} '- paréntesis'() '-" corchetes angulares "' <> ' –