gpt4 book ai didi

java - 覆盖和隐藏在java中有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:11 26 4
gpt4 key购买 nike

我搜索了很多。它们的区别在于override是针对实例方法的,hidden是针对静态方法的。而隐藏其实就是方法的重新定义。但是我还是不明白。如果重定义意味着parent的静态方法在子类中仍然存在,只是我们看不到而已?或者为什么我们称它为隐藏而不是任何其他词?但是如果它存在,我找不到再次调用该方法的方法。老实说,从功能层面我找不到它们不同的原因。有人能从内存等更深层次解释一下吗?

最佳答案

静态成员(方法和变量)不会出现在继承它们的子类(子类)对象中,但它们将作为单个副本出现在内存中。

静态成员可以通过父类(super class)和子类的类名访问,但它们实际上并不存在于这些类的对象中。

当你继承非静态成员时,内存中的子类对象将包含继承的方法以及它自己的方法。所以当你试图在这里写一个类似的方法时,父类(super class)方法将被覆盖。另一方面,由于静态方法不参与继承,您编写的任何存在于父类(super class)中的类似方法都会在每次被请求时运行新方法。父类方法只是隐藏了,没有被覆盖!

关于java - 覆盖和隐藏在java中有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24113776/

26 4 0
文章推荐: flatMap 返回 List 而不是 List 后,Java Stream 收集