对Java中的多态性和静态绑定感到困惑
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中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
3 周前
By DDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前
By DDD
威尔R.E.P.O.有交叉游戏吗?
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

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

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
