当前位置: 首页 > 知识库问答 >
问题:

传递变量时的Java多态性。[副本]

司马昕
2023-03-14
class X{
    public void print(X x){System.out.println("xx");}
    public void print(Y y){System.out.println("xy");}
}
class Y extends X{
    public void print(X x){System.out.println("yx");}
    public void print(Y y){System.out.println("yy");}

    public static void main(String[] args){
        X x = new Y();
        x.print(x);
        System.out.println(x.getClass());
    }

}

我得到的输出是“yx”,我不明白为什么,x.getclass()返回“class y”,那么它的调用不应该是参数为y的方法吗?

共有1个答案

裘兴思
2023-03-14

重载(即选择使用同名的同一个类/接口的多个方法中的哪一个)是基于静态类型解析的。这与重写(在X#print(X)Y#print(X)之间进行选择)相反,重写在运行时解决。

 类似资料:
  • 错误:网络错误:响应不成功:已接收状态代码400 更新:以下是错误详细信息: [GraphQL错误]:消息:类型为“String!”的变量“$OrderBy”用于应为“ItemorderByInput”类型的位置。位置:[object object],[object object],路径:未定义 尝试让ALL_ITEMS_QUERY接受orderBy变量。我是不是漏掉了什么?

  • 问题内容: 我的代码: 为什么不引用元素? Python:除非明确复制,否则所有内容都将作为参考传递[这不是True吗?] 请说明.. python如何确定 引用和复制 ? 更新: 怎么做 ? locs必须包含最终处理后的响应! 我不想使用,没有它可能吗? 问题答案: Python中的所有内容都是通过值传递和分配的,与Java中的所有值都传递和分配的方式相同。Python中的每个值都是对对象的引用

  • 我有一个函数,它应该创建一个变量,并用变量乘积的值,属性填充变量。为了变得更加灵活,我没有为产品属性创造值 我试过上百种方法,使值坚持变化,但他们没有。变体是在后端创建的,但它没有Atributed??????请帮忙!!我做这个已经4天了。( 归属于产品atributes的唯一值是“空转”(>&gtempty<<)价值。////////////变量数据-&>;数组(key->Value),以便产品

  • 问题内容: 说我是这样的: 然后,我可以通过以下操作从项目中拉出: 但能够以动态使用的? 例如,where变量可以是或。 问题答案: 正如4castle指出的那样,您可以使用计算对象属性名称和结构分解以及附加的键/值对变量进行结构分解。

  • 问题内容: 我有类似下面的代码: 但是,该变量未在ActionListener类的范围内定义。如何传递变量? 问题答案: 除了Hovercraft的答案外,您还应注意,您不会被迫对侦听器使用匿名类。气垫船的答案代码类似于以下代码:

  • 好吧,所以这是已经问过的问题,但答案似乎没有多大帮助。我能够使用jython和该问题中发布的答案运行python脚本,但我无法传递变量...当我运行程序时,错误说没有像arg1 arg2和arg3这样的变量...我做错了什么? 这是python脚本 现在错误说arg1 arg2和arg3未声明