php小编西瓜经常收到关于Java中的多态性和静态绑定的问题。这两个概念在Java中经常被提及,但对于初学者来说可能会感到困惑。在本文中,我们将简要介绍多态性和静态绑定的概念,并解答一些常见问题,帮助读者更好地理解和应用这些概念。
问题内容
我对java还是很陌生。所以我一边玩java一边阅读多态性和静态绑定。我来这里是为了澄清我的思考过程是否正确。
class a { void foo(a a) { system.out.println("aaaaaa"); } } class b extends a { void foo(b a) { system.out.println("bbbbb"); } } class c extends b{ void foo (a a){ system.out.println("cccccbbbb"); } }
我创建了以下名为 c
的对象,并以 c 作为参数调用 foo。
C c = new C(); c.foo(c); // the output is BBBBB
从这篇关于java重载和动态绑定的问题中,我了解到如果在类中找不到发送的参数,它将把参数(在本例中为c)向上转换为在类中可以找到的参数(在此情况 a,因为 void foo (a a)
)。但如果是这样的话,它不应该打印“cccccbbbb”吗?通过静态绑定?void foo (a a)
)。但如果是这样的话,它不应该打印“cccccbbbb”吗?通过静态绑定?
解决方法
类 c
有 2 个重载方法,名称为 foo
c
的参数调用方法 foo
时,将选择最具体的一个 - 类 b
在层次结构上比类 a
更接近,因此调用 foo(b)
类
foo
🎜
// defined in the class C void foo (A a){ System.out.println("CCCCCBBBB"); } // inherited from the class B void foo(B a) { System.out.println("BBBBB"); }🎜当我们使用类 🎜 的参数调用方法
foo
时,将选择最具体的一个 - 类 b
在层次结构上比类 a
更接近,因此调用 foo(b)
。🎜以上是对Java中的多态性和静态绑定感到困惑的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版
中文版,非常好用