尽管进行了一些广泛的搜索,但我遇到了一些代码,但无法理解它的某个方面!
我的问题是:为什么有时在括号内声明类,如以下代码所示?
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中float和double的范围包括什么? 为什么不建议在精度要求很高的地方使用float或double? 问题答案: Java的类的成员包含类型的Min和Max值。 检出的和静态最终成员。 (有些)人们会建议不要在精度和精度至关重要的事情上使用浮点类型,因为舍入误差可能会使可测量(少量)的量不起作用。
问题内容: 我想知道为什么Java数组声明使用大括号而不是标准括号。如此处所示。我认为总体上可能需要进一步理解大括号,但这是我现在的议程。 相反,这是正确的。 问题答案: 圆括号通常表示集合和合奏,而圆括号通常表示类似C语言的参数。 很久以前,人们已经习惯了与C进行这种约定。我非常确定它可以在Java中以这种方式工作,以与旧语言保持某种语法一致性。
问题内容: Java不能执行运算符重载,但可以用于和和其他一些类。这怎么可能? 更新: 为什么这样做? 问题答案: 不是操作员重载的示例。在语言中被内置为合并运算符 和 算术加法运算符。 这意味着用Java编写程序的人不能重载运算符,但是就Java语言的语法而言,它被定义为连接和加法运算符。 编辑 它适用于其他类,如和由于自动装箱。 如果您看一下执行字符串连接的Java程序的字节码,您会发现它创建
我使用上面的代码来旋转PDF。 对于上面的图像,我得到以下输出 从这段代码来看,页面的内容已经移出了框架,并且没有围绕其中心进行旋转。但我想把输出作为 请给我一些建议。提前谢谢。
问题内容: 我已经准备好参加Java认证考试,并且在其中一项练习测试中看到了类似的代码: 我的问题是…在方法外用花括号编写代码是否有效?这些(如果有)有什么影响? 问题答案: 从这里借来的- 通常,您需要将代码放在构造函数中以初始化实例变量。使用构造函数初始化实例变量有两种选择:初始化块和final方法。实例变量的初始化块看起来像静态初始化块,但没有static关键字: Java编译器将初始化程序