为什么PHP允许通过子类中的覆盖将受保护和私有方法公开?
发布时间:2020-12-13 17:28:16 所属栏目:PHP教程 来源:网络整理
导读:从一些简短的说明中,我发现当我执行以下操作时,在覆盖子类中的超类方法时会收到错误: 使用私有子类方法覆盖受保护的超类方法 使用受保护或私有子类方法覆盖公共超类方法 但是,如果我在另一个方向上执行,则不会抛出任何错误: 使用受保护或公共子类方法覆盖
从一些简短的说明中,我发现当我执行以下操作时,在覆盖子类中的超类方法时会收到错误:
>使用私有子类方法覆盖受保护的超类方法 但是,如果我在另一个方向上执行,则不会抛出任何错误: >使用受保护或公共子类方法覆盖私有超类方法 这似乎对我来说是直观的 – 我期望它能够以其他方式工作,以便强化信息隐藏和封装.这似乎允许通过允许内部人员以可能破坏其他方法的方式暴露内部设计,并且我无法看到这种情况是一个好主意.为什么这样被实现了,我错过了什么? 此外,其他编程语言中的标准做法是?
你所谓的“执行信息隐藏”是一种可能会破坏子类的东西,因为突然的属性和方法可能会消失.你不能以这种方式摆脱限制来破坏事物.
私有有点不同:在这种情况下,属性/方法不存在于子类的角度.因此,没有理由,为什么一个子类不能引入一个具有该名称的属性,因为它将是一个不同的属性. 您是对的,这可能导致设计不好,但是您总是可以构建一个设计不良的应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |