gpt4 book ai didi

Java 参数传递

转载 作者:行者123 更新时间:2023-12-02 00:04:43 25 4
gpt4 key购买 nike

我对下面的代码感到困惑。该代码是由其他人编写的,我目前正在研究该代码,以便更了解参数传递在 Java 中的工作原理。

代码#1

addKeyListener((KeyListener)new TAdapter());

和代码#2

addKeyListener(new TAdapter());

假设 TAdapter 是扩展 KeyAdapter 类的类,那么意味着相同的事情并执行相同的事情吗?我还注意到,我不一定必须将 TAdapter 对象显式转换为 KeyListener,即使从我在 Eclipse 中读到的方法描述来看,该方法接受 KeyListener 对象。为什么这可能? 我从 Java 文档中快速搜索了 KeyAdapter 类,显然 KeyAdapter 类实现了 KeyListener 接口(interface)。 那么我是否可以安全地假设 Java 在参数传递中的工作方式之一是该方法可以接受从某个类继承的类的实例,该类实现了方法描述中列出的同名接口(interface)?如果是这样,为什么这也是可能的?

附注顺便说一句,我不明白为什么程序员将类命名为 TAdapter,T 代表什么?我还注意到其他源代码中的这种类型的类命名,但我从未理解这种假定的约定。

最佳答案

嗯,是的,确实“该方法可以接受继承自实现接口(interface)的某个类的类的实例”。

更一般地说,就多态性而言,实现接口(interface)的类可以说是该接口(interface)的子类,并且任何参数或变量都可以分配为其声明的任何子类的实例类。

至于为什么那个类被命名为TAdapter,恐怕我无法回答。至少这不是任何常用的约定。 :)

关于Java 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089049/

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