java - 重载静态变量是否需要静态后期绑定(bind)?

标签 java php oop static late-binding

我的一个 friend 问我他​​是否可以在 Java 中重写静态变量,我很震惊他竟然想到了如此奇怪的编码方式。然后他向我解释说这在 PHP 中是可能的,我想知道优秀的开发人员是否应该这样做有充分的理由。在我看来,静态成员的特征是类成员,与对象无关,因此它们与类的派生无关,但我无法说服他,因为他是如此天真和固执。

任何人都可以对这整件事提出一个很好的论据,或者让我相信这是一个很酷的功能吗?

最佳答案

静态继承没有任何意义。并不是说不可能,只是你没有从中得到任何好处。

通过正常继承,您可以获得对同一事物有不同实现的好处,并且不知道/关心将使用哪个实现。使用静态继承,您没有可操作的对象,并且使用的是类名,因此您无法利用多态性。

例如如果您正在调用 Child.someMethod() ,您将与子级的实现相关联,如果您实际上只需要父级,则可以只执行 Parent.someMethod() 。如果您需要向 Parent 实现添加一些内容,您只需创建一个 Child.someOtherMethod() ,在其中调用 Parent 并在之后执行一些其他操作。静态继承只是语法糖...

关于java - 重载静态变量是否需要静态后期绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023503/

相关文章:

java - 有没有更快的方法来遍历java中的BufferedImage的像素?

php - 如何从此结果集创建一个数组(嵌套类别存储在具有遍历模型的数据库中)?

oop - 多态期间内存会发生什么?

java - 无法从 'https://services.gradle.org/distributions/gradle-6.5-bin.zip' 安装 gradle 分发

java - Maven 本地 Artifact 文件编辑

java - 创建不带参数的方法和创建字符串参数的方法之间的区别?

php - MYSQL 中带有否定的多个 Case 语句

php - Composer - 您的系统中缺少请求的 PHP 扩展 mbstring

Java 将 JPanel 向下传递给子类

c# - 对象模型设计选择