为什么在Java中围绕类名使用括号?
尽管进行了一些广泛的搜索,但我遇到了一些代码,但无法理解它的某个方面!
我的问题是:为什么有时在括号内声明类,如以下代码所示?
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();
}
}
我特别关注这一行代码的地方:
Animal myAnimal = (Animal)myCat;
我认为这与以下事实有关:一个类扩展了另一个类,但不确定括号中定义的类表示什么。
在这方面的任何帮助表示赞赏。先感谢您。
回答:
您所看到的是强制转换,告诉编译器可以将Cat分配给Animal。
强制转换用于编译器无法将一种类型安全地转换为另一种类型的情况,要么是因为它不知道所涉及的类型是什么,要么是因为转换会丢失信息(例如,如果您要使用双精度数,存储在float类型的变量中)。
在您的示例中,由于Cat扩展了Animal,因此完全不需要演员表;由于所有的猫都是动物,因此编译器不需要显式强制转换就可以将猫分配给动物。
演员表应保留用于特殊场合。如果您定期使用显式强制转换,则可能意味着您无法从类型系统中获得最大收益。
以上是 为什么在Java中围绕类名使用括号? 的全部内容, 来源链接: utcz.com/qa/407326.html