gpt4 book ai didi

java - 使用对象类型引用调用函数(持有不同的实例)

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:11 26 4
gpt4 key购买 nike

我有一个 Dog 类,描述为:

class Dog {
//data members
void bark() {
//Bark Algorithm
}
}

现在在另一个具有 main 方法的类中,并且在 main 方法中,如果我执行以下操作:

Object dog = new Dog();
dog.bark();

当“dog”引用持有 Dog 实例时,它不应该工作吗?为什么这无效?

这里使用的语言是Java。

感谢您提前提供的帮助。

最佳答案

Java 是强类型的。 Java 编译器在编译时而不是运行时执行方法检查。 dog 被声明为 Object,因此编译器会检查 Object 类是否具有名为 bark() 的方法。事实并非如此,因此它会引发编译器错误。 Java 就是这样设计的。

注意,这并不是多态性本身的限制,而是Java中多态性实现的限制。这段完全相同的代码可以在更动态类型的语言(例如 Groovy)中完美地编译(和工作),Groovy 也运行在 JVM 上。

关于java - 使用对象类型引用调用函数(持有不同的实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com