如果编程语言不支持方法重写,那么程序员可能会遇到什么不便?

学生1997

从理论上讲,如果需要,Child类不能覆盖父类的方法。但是它实际上在实际方面有什么影响?程序员将面临什么问题?

斯蒂芬·C

这是Java中的示例

public class Mammal {
    public final int getNumberOfLegs() {
        return 4;
    }
}

public class Human extends Mammal {
    @Override                        <<-- compilation error!
    public int getNumberOfLegs() {
        return 2;
    }
}

在这里,我将Mammal的方法声明getNumberOfLegs()final,这意味着不允许在子类中重写该方法。

  • 当我尝试在子类中重写它时,出现编译错误。
  • 如果我需要覆盖它(例如在此示例中,人们的腿数不正常),那么我有一个大问题。

现在想象一下,如果Java不允许我重写子类中的任何方法,将会发生什么我将无法在子类中实现具有不同行为的任何方法。

  • 在一些简单的情况下,我将能够解决此问题。(在此示例中,我可以numberOfLegs向所有Mammal对象添加一个字段。)

  • 在其他情况下,在类层次结构中共享常见行为会更加困难。(在我想到的示例中,您可以想象我没想到在子类getNumberOfLegs() 可能不需要以不同的方式实现它。)现在,很明显,您可以通过修改父类的代码而不是在子类中重写代码来更改行为。然而:

    • 这减少了您作为程序员的选择,并且
    • 这也会导致父类对当前和将来的子类有太多的了解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果Windows 7不支持WSL,那么“基于UNIX的应用程序子系统”是什么?

为什么函数式编程语言支持自动记忆但不支持命令式语言?

如果Android是Linux发行版,那么Ubuntu为什么不支持.apk文件?

编程可能会造成混乱。Ruby语言

如果 'float'<= INT_MAX 为真,那么为什么 (int)'float' 可能会触发未定义的行为?

SAS为什么不支持短路操作员?

localizedString(forRegionCode :)使用应用程序不支持的语言

语言不支持“ MethodName”

useState不支持第二个CallBack,那么简单的解决方法是什么?

如果JSF不支持<f:actionListener>,为什么可以将它绑定到任意方法?

如果 Java 不支持指针,那么它如何记录保存数据的内存位置?

如果服务器不支持SSLv3,为什么Java SSL套接字连接会严重失败

为什么Java(> = 7版本)不支持没有主方法的程序?

如果Mac代码签名被篡改,什么可能会失败?

如果C ++中的DLL不支持二进制封装,那么什么时候才可以使用它们呢?

编程语言的哪些语法特征对盲程序员有问题?

多程序员编程IDE或插件

务实的程序员 - 断言式编程

DolphinDB语言是否不支持语法?

VSC:不支持或定义 HTML 语言

为什么在Vuejs中使用Laravel 8进行AJAX POST请求会引发405(不支持方法)错误?

为什么收到“对象不支持此属性方法”?

为什么我不支持请求方法GET?

为什么不支持SpringMVC请求方法'GET'?

为什么红宝石不支持方法重载?

列出了不支持类型的扩展方法。为什么?

不支持 put 方法

如果Java不支持参数化类型数组,那么Arrays.asList()如何与它们一起使用?

如果设备不支持NFC权限,是否会导致错误?