Java 将对象传递给方法

标签 java polymorphism

假设 X 和 Y 是类,且 Y 扩展 X。另外,令 method(X xObj) 为 X 的方法。为什么下面的代码可以编译?

X xObj = new X();
Y yObj = new Y();
xObj.method(yObj);

此外,是否还有其他类似的情况,其中代码似乎不正确编译?

最佳答案

如果Y扩展X,那么,Y一个X。您可以在任何应用程序中(始终如一地)用 X 替换 Y

你可以做所有这些奇特的事情:

X object = new Y();
object.method(object)
Y objY = new Y();
object.method(objY);
objY.method(object);

要注意的主要事情是子类是其父类的类型

关于Java 将对象传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29838641/

相关文章:

java - JTree 实现

c++ - 我该如何创建一个类,以对对象进行类型删除,直到调用了一个函数,而没有事先指定可能的函数列表?

java - 将 php array_sum 转换为 java

java - 使用Java/JSP打印支票

java - 当代码尝试将 Tree 向下转换为 Redwood 时,将抛出 ClassCastException

c++ - 虚拟函数和vtable如何实现?

c++ - 返回基类类型的引用时捕获派生异常?

java - 如何强制对 super 方法进行多态调用?

haskell - haskell 中的多态函数列表?

java - Jenkins 使用 Maven 依赖项构建失败