Mi sono imbattuto in qualche codice e non riesco a capire un certo aspetto di esso anche se ho fatto delle ricerche approfondite!Perché le parentesi sono usate attorno a un nome di classe in Java?
La mia domanda è: perché a volte le classi vengono dichiarate tra parentesi come nel seguente codice?
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();
}
}
dove la mia attenzione è su questa riga di codice, in particolare:
Animal myAnimal = (Animal)myCat;
credo che abbia qualcosa a che fare con il fatto che una classe estende un altro, ma sono sicuro ciò che la classe definita tra parentesi significa.
Qualsiasi aiuto su questo è apprezzato. Grazie in anticipo.
È un typecast ma in questo caso il typecast non è necessario - poiché 'Cat' è un sottotipo di Animal. I tipi sono necessari quando si desidera assegnare un Super-tipo a un sottotipo, ad es. 'Cat cat = (Cat) someAnimal;'. Se lo fai dovrai assicurarti che nella variabile sia presente un 'Cat' o un sottotipo di' Cat', ad es. usando 'instanceof'. Altrimenti Java genererà un 'ClassCastException'. –
in questo caso particolare, poiché Cat estende Animal e myAnimal è già Animal, non è necessario lanciare myCat in Animal. Quindi, Animal myAnimal = myCat; avrebbe funzionato – Shark
parentesi '[]' - parentesi '{}' - parentesi '()' - "parentesi angolari" '<>' –